数据转换解决方案sqoop解说.pptx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据转换工具sqoop 1. Sqoop工具介绍 Sqoop Sqoop是Apache顶级项目,主要用来在Hadoop和关系数据库中传递数据。通过sqoop,我们可以方便的将数据从关系数据库导入到HDFS,或者将数据从HDFS导出到关系数据库。 sqoop主要通过JDBC和关系数据库进行交互,理论上支持JDBC的database都可以使用sqoop。 1.1 Sqoop介绍:兼容数据库 Sqoop主要通过mapreduce把数据从关系型数据库中导入数据到HDFS,目前测试兼容的数据库。 对oracle数据库的处理,复制jdbc驱动ojdbc6.jar 到sqoop的lib目录即可。 数据库 版本支持 直接支持 MySQL?? 5.0+ Yes Oracle 10.2.0+ No PostgreSQL 8.3+(只支持导入) Yes HSQLDB 1.8.0+ No Teradata 13.0+ No 1.2 工作原理:总体架构 1.2 工作原理: 工作流程(1) Sqoop架构非常简单,其整合了Hive、Hbase和Oozie,通过map-reduce任务来传输数据,从而提供并发特性和容错。 Sqoop可以通过命令行先创建一个任务名,并描述该任务的导入或者导出工作,然后执行即可。其主要工作流程如下: 读取要导入数据的表结构,生成运行类,默认是QueryResult,打成jar包,然后提交给Hadoop; 1.2 工作原理: 工作流程(2) 设置好mapreduce的job,主要包括如下参数: (1) InputFormatClass : 设置输入格式; (2) OutputFormatClass: 设置输出格式,包括:文本、SequenceFile和AvroDataFile三种格式; (3) Mapper: 设置执行mapreduce任务的mapper类; (4) taskNumbers: 设置执行mapreduce的并行任务数。 1.2 工作原理: 工作流程(3) 3. 由Hadoop来执行MapReduce任务完成Import工作: 1)首先要对数据进行切分,记录划分范围并读取; 2)然后创建RecordReader从数据库中读取数据; 3)创建Map,RecordReader一行一行从关系型数据库中读取数据,设置好Map的Key和Value; 4)运行map。 1.3 数据导入Import特性 1.支持文本文件、avro、SequenceFiles格式, 默认为文本。 2.支持数据追加,通过apend指定。 3.支持table列选取(column),支持数据选取(where、 join)。 4.支持map任务数定制和数据压缩。 5. 提供参数将关系数据库中的数据导入到HBase ,导入HBase分二部:1)导入数据到HDFS; 2)调用HBase put操作逐行将数据写入表。 1.4 数据导出Export特性 1. 支持将数据导出到表(table)或者调用存储过程(call)。 2. 支持insert、update模式。 3. 支持并发控制。 1.5 增量备份(1) 一般情况下,关系数据表存在于线上环境的备份环境,需要每天进行数据导入。如果数据表较大,我们通常不可能每次都进行全表的导入,而sqoop提供了增量导入数据的机制。 控制增量导入主要由三个参数控制: --check-column (col):表明当判断哪些行要被导入时需要检查的列;? --incremental (mode):表明Sqoop是如何判断哪些行是新的,mode主要包括append(增量)和lastmodified(上次备份后修改过的)两个模式; --last-value (value):表明上次导入之后check-column(被检查列)的最大值(已排序的)。 1.5 增量备份(2) 还有一个问题,每天导入时last value值都不一样,如何做到每天动态的读取新的last value呢?这点sqoop也想到了,sqoop支持把一条sqoop命令变为一个job查找最新的last value,然后自动地更换last value的值。 我们只要设置一个每天增量导

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档