数据迁移工具Sqoop怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Sqoop 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,它是Hadoop环境下连接关系数据库与Hadoop存储系统的桥梁,支持多种关系型数据源和Hive、HDFS、Hbase的相互导入。支持全表导入,也支持增量数据导入机制,Sqoop工作机制利用MapReduce分布式批处理,加快了数据传输速度和容错性。
选择Sqoop理由:
1、可以高效的利用资源,可以通过调整任务数来控制任务的并发度。
2、可以自动地完成数据类型映射与转换。导入的数据是有类型的,它可以自动根据数据库中的类型转换到Hadoop中,当然也可以自定义他们的映射关系。
3、它支持多种数据库,eg:mysql、Oracle、PostgreSQL。
Sqoop工作原理:
Sqoop利用MapReduce并行特点以批处理的方式加快数据传输,从而提供并发特征和容错。Sqoop主要通过jdbc连接关系型数据库,理论上只有关系型数据库支持JDBC都可以使用Sqoop与HDFS进行数据交互。
1、Sqoop从关系型数据库导入HDFS的原理:用户先输入一个Sqoop import 命令,Sqoop会从关系型数据库中获取元数据信息,包括库信息、表有哪些字段及字段类型等,获取信息后会将导入命令转换为基于Map的MapReduce任务。会开启很多map任务,每个map任务读取一部分数据,多个map任务并行完成数据复制到HDFS分布式文件系统上。
2、Sqoop导出功能原理:用户输入export命令,Sqoop会获取关系型数据表结构信息,建立与Hadoop字段有关系型数据库表字段的映射关系,将命令转换为基于Map的MapReduce作用,生产很多Map任务,并行地从HDFS中读取数据文件,将这个数据复制到数据库中。
Sqoop版本和架构
Sqoop存在两个版本,1.4.x和1.99.x,通常简称为sqoop1和sqoop2
Sqoop1架构师使用Sqoop客户端直接提交的方式,访问方式是CLI控制台方式进行访问,在命令或脚本中指定数据库名及密码。
Sqoop2架构引入了Sqoop Server,集中化管理Connector,提供多种访问方式,如CLI、Web UI、REST API,同时Sqoop2通过CLI方式访问会有一个交互式界面,使输入的密码信息不被看到。
Sqoop不仅可以用于关系型数据库与HDFS文件系统之间进行数据转换,也可以将数据从关系型数据库传输至Hive或Hbase,而对于数据从Hive或者Hbase 传输到关系型数据库来说,则可以从Hive或者Hbase将数据提取至HDFS,然后使用Sqoop将上一步的输出导入到关系数据库。
使用Sqoop增量导入有append 和 lastmodified两种模式,lastmodified模式区别于apend是可以指定一个时间戳字段,按时间顺序导入,这个模型可以指定增量数据在HDFS的方式,比如最终增量结果为一个文件。
需要在应用的主要参数:
-check-column:指定增量导入的依赖字段,通常为自增的主键id或者时间戳
-incremental:指定导入模式(append 或者lastmodified)
-last-value:指定导入的上次最大值,也是这次的开始值。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。