使用Sqoop进行的数据传输

Sqoop是用于关系型数据库和Hadoop数据相互转移的工具。它接收命令后转换为MapReduce任务完成数据拷贝。博客详细介绍了Sqoop在RDBMS与HDFS、HBASE、HIVE间的数据传输方式,包括增量导入、单列族和多列族传输等,还提及Hbase数据映射Hive。

Sqoop介绍

  • Sqoop是一个用来将关系型数据库和Hadoop中的数据进行相互转移的工具,可以将一个关系型数据库(例如Mysql、Oracle)中的数据导入到Hadoop(例如HDFS、Hive、Hbase)中,也可以将Hadoop(例如HDFS、Hive、Hbase)中的数据导入到关系型数据库(例如Mysql、Oracle)中。

在这里插入图片描述

  • Sqoop工具接收到客户端的shell命令或者Java api命令后,通过Sqoop中的任务翻译器(Task Translator)将命令转换为对应的MapReduce任务,而后将关系型数据库和Hadoop中的数据进行相互转移,进而完成数据的拷贝。

sqoop数据传输

一、RDBMS —> HDFS

a.增量导入-incremental append

        incremental append -->只支持新增不支持更新;

        先将服务启动好之后进行如下操作,这里演示从关系型数据库传输数据至HDFS

  • 实例演示
sqoop import \
--connect jdbc:mysql://single:3306/mysqltest \
--username root \
--password root \
--query "select sid,student_id,course_id,score from score where \$CONDITIONS"  \
--target-dir /kb10/mysqlscore1119 \
--split-by sid \
-m 2 \
--check-column sid \
--incremental append \
--last-value 0
  • 代码翻译:
    *  表示从系型数据库传输数据至HDFS( import);
    *  表示连接到mysql的mysqtest数据库(图中的single为服务器的hostname,也可写为ip地址,使用hostname的前提是地址与
       hostname做过关联配置);
    *  表示连接数据库的用户名;
    *  表示连接数据库的密码;
    *  query为请求的查询语句,后面的$CONDITIONS表示引用查询到的输出结果;
    *  表示数据导出的目标路径;
    *  这里的split-by与下一行相配合,图上为sid为分割,不同的sid将进行Hash操作之后取余mapreduce的数量,最后的结果决定了
       进入哪一个mapreduce内(也可以写成--num-mappers 2 \);
    *  表示启动mapredce的数量;
    *  从这一行到最后一行配合使用,可以实现增量插入数据,相当于where sid >0;
    *  表示使用incremental append增量导入操作;
    *  表示增量导入的开始行,这里是第一次导入所以也是全量导入;
  • 实例结果展示

        运行时代码截图展示,可以见到上下边界值的大小,下边界作为下一次增量导入的上边值;

20/11/19 18:39:23 INFO tool.ImportTool: Incremental import based on column `sid`
20/11/19 18:39:23 INFO tool.ImportTool: Lower bound value: 0
20/11/19 18:39:23 INFO tool.ImportTool: Upper bound value: 60
20/11/19 18:39:23 INFO mapreduce.ImportJobBase: Beginning query import.

  • 结果展示
            落盘文件数量为2,对应的启动的mapreduce数量,数据查询到第60行结束;

在这里插入图片描述

1,1,1,60
2,1,2,59
3,1,3,58
4,1,4,22
5,1,5,59

...
...
58,11,7,99
59,12,3,100
60,12,8,60

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值