Apache Sqoop使用

3 篇文章 0 订阅
1 篇文章 0 订阅

前言:
使用sqoop之前,一定要注意版本兼容性。所以在安装或者在使用Sqoop之前一定要关注下这块的内容,以免由于不兼容导致并非指令无法使用等情况。比如:我的HBase为1.2.1,hadoop为2.7.2,zookeeper为3.4.8,sqoop为:1.4.6,我在使用sqoop往HBase导入数据时,就不能使用–hbase-create-table指令,因为sqoop-1.4.6会使用0..版本的HBase API创建table,所以导致报错。

1、Mysql到HDFS

指令为:sqoop import --connect jdbc:mysql://localhost:3306/test --username ** --password ** --table Info --target-dir /user/test_1 -m 2 --split-by ID
上述指令的功能是将Mysql数据库的database为test的里面的Info表导入到hdfs的/user/test_1文件中。-m代表map的个数,体现了并行化;由于设置了-m所以必须要设置–split-by,从而告诉系统按照哪个column进行数据分割并行化处理。
当然,也可以使用其他的一些参数,例如:使用sql语句对源表的数据进行处理:–query;指定导入列和列的顺序:–columns。sqoop import --connect jdbc:mysql://localhost:3306/test --username ** --password ** --query 'SELECT * FROM Info WHERE $CONDITIONS' --target-dir /user/test_1 -m 2 --split-by ID;
import --connect jdbc://mysql://localhost:3306/test --username ** --password ** --table Info --columns "ID,Name,Number,Time" -m 2 --split-by ID --target-dir /user/test_1
其实也可以不指定输出路径,这样系统会默认输出到hdfs的一个文件中。

2、Mysql到HBase

指令为:sqoop import --connect jdbc:mysql://localhost:3306/test --table Info --hbase-table test --column-family info -m 2 --split-by ID
这里需要注意的是,由于版本问题,无法通过指令让系统自动创建table,所以必须要自己先在HBase里面创建好表名为test,列族为info的表。当然如果你的版本兼容的话,就可以这样:sqoop import jdbc:mysql://localhost:3306/test --table Info --hbase-create-table --hbase-table test --column-family info -m 2 --split-by ID
同导入到HDFS一样,你也可以使用–query等参数。可以参看上面的格式,这里不再赘述。

补充:这里我是mysql为例,如果你想将oracle等其他sqoop支持的关系型数据库的数据导入到HDFS、HBase或者Hive基本上都是差不多的,主要是连接字符串会有差异,已经一些字段的问题,具体可以自己查阅官网教程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值