Sqoop工具的使用和详解

Sqoop是用来进行数据导入导出的工具,一般用在hadoop这个框架中,常用的应用场景有将mysql数据库中的数据导入HDFS或者Hive、Hbase,
或者从后者中导出到关系型数据库中,下面将进行几段代码的演示导入和导出的过程。
将mysql中的数据导入到hadoop集群上(HDFS):
首先将脚本命令贴出:


./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --table persons -m 1
username:数据库的用户名
password:用户名对应的密码
table:数据中需要导入的表名
-m :启动mapreduce的个数。
这里实现的是将一个表(test)的全部数据导入到hdfs中,其中可以设置导入到hdfs的路径 通过参数--target-dir <dir>设置,其他的还有很多的参数设置可以通过去官网查看:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hive_2
将test表中的某些数据导入到HDFS中:
./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --query 'select ID,name from persons where $CONDITIONS' --target-dir /persons -m 1


将mysql数据导入Hive:


传统地将mysql中的数据导入hdfs有中方法就是:


1 将mysql数据导出到本地


2 在Hive中创建表格式


3 将导出在本地的数据导入到Hive中
但是用了sqoop之后我们可以一步完成上面的操作。
首先将mysql的数据导入到Hive上,其实也是导入到hdfs上,但是有个好处是我们可以直接通过Hive去处理数据,得到我们想要的结果,下面的shell脚本和上面的脚本很相似。
./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --table persons -m 1 --hive-import
这里有个需要说明的是,我们将mysql数据导入到Hive中的时候是不需要去创建表,在导入过程中sqoop会自动解析数据,帮我们创建对应格式的表结构。这里不得不说省了很大的功夫,毕竟创建表结构很麻烦的,尤其是表字段很多的情况下。
和上面的区别就是最后加了--hive-import 同时也是可以通过参数来设置导入的目录,从官网查询。
Mysql中数据导入到HBase:
./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --table persons -m 1 --hbase-create-table --hbase-table person2 --column-family info --hbase-row-key sid
--hbase-create-table :自动创建hbase表


--hbase-table :表明


--column-family:列簇名


--hbase-row-key:指定rowkey对应Mysq中的键
  注:目前还不能直接将HBase中数据直接导出到Mysql中,可以先导出到本地,然后再导入Mysql


将Hive中的数据导出到mysql中:
./sqoop export --connect jdbc:mysql://localhost/test --username root --password lakers -m 1 --table personcopy --export-dir /hive/warehouse/persons --input-fields-terminated-by '\0001'


--export-dir:导出数据的目录


--input-fileds-terminated-by : 字段之间的分割符


注意:


     这里需要注意的是,我们在从mysql导入Hive中的时候是不需要创建表结构的,但是我们在将Hive的数据导出到Mysql中的时候是需要自己创建表结构的,很简单的原因,比如我们Mysql 的一个varchar(50)或者varchar(60)这种会自动在Hive中解析为String类型,
但是相反的是,将Hive中的String类型导入到Mysql中就不知道是解析为varchar(?),所以在这个时候我们需要手动的去创建对应的表结构!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值