sqoop传递数据实践

应用场景:

1将原有关系数据库的数据传递到大数据平台如hive、hbase。

2将大数据平台的数据传递到关系数据库中。

简单应用:表对表的同步。

复杂应用:在同步时可以通过query-sql来指定所要传递的数据。

所有红字“注意”都是坑,我都帮你踩过了,你感到幸福吗?

导入(import)

导入的意思就是将关系数据库的数据导入到HDFS、Hive、HBase,这个解释似乎是废话

导入到HIve

import --connect jdbc:postgresql://url:port/schema --username u --password p --table RelationalDatabaseTable --hive-import --hive-table HiveTable -m 1 --null-string \\N --null-non-string \\N

导入到HBase

import --connect jdbc:postgresql://url:port/schema --username u --password p --table RelationalDatabaseTable --hbase-table HbaseTable --column-family YourFamily --hbase-row-key RelationalDatabaseTable_PrimaryKey -m 1

注意:

当你在关系数据库中使用了schema,此时如何导入呢。

应添加-- --schema yourSchema,是的你没看错是两个--,如果你偷懒或者强迫症发作了,真是对不起,sqoop救不了你

延伸阅读:对于postgresql,默认情况下,sqoop的list-tables只列出public目录下的表,所以要想列出特定schema下的表,你需要使用-- --schema来指定哦

简介--query的使用

导入时使用sql查询语句,此时-m 1表示并行度为1,如果你要想增加并行度,对于--query 的情况,你还要格外指定并行度参考字段,即使用

--split-by columnName
 sqoop import \
  --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
  --split-by a.id --target-dir /user/foo/joinresults
注意:使用--query时,以上红字是必须的

导出(export)

导出的意思就是将大数据平台上的数据导出到传统的关系数据,这个解释貌似也是废话

将Hive的数据导出到关系数据库

export  --connect jdbc:postgresql://url:port/schema --username u --password p --table RelationalDatabaseTable --export-dir HDFS_Hive_Table_URL --input-fields-terminated-by "\001" --lines-terminated-by "\n" --input-null-string "\\N" --input-null-non-string "\\N" -m 1

注意:

--input-fields-terminated-by "\001" --lines-terminated-by "\n"
这两个选项一定记得加上, 不然错了都不知道怎么错的(含义hive中的数据存储格式,字段以"\001"分隔,行以"\n"分隔)

将HBase的数据导出关系数据,怎么破。目前sqoop没有破,以后也许会破。

一个解决思路,创建一个Hive外部表A关联到HBase的表,通过A将Hbase的数据导入到一个Hive内部表B,然后再用上面Hive数据导出到关系数据的方法。一句话曲线救国。


其他(eval)

eval就是估算、计算、尝试的意思,解释的不好,因为这是我解释的

eval命令可以发送一个简单的SQL到关系数据库引擎,神奇吧,有些人可能有想法了。。

sqoop eval --connect jdbc:mysql://db.example.com/corp \
    --query "SELECT * FROM employees LIMIT 10"
注意:官方说此方法只适用于测试数据库连接。对这就是官方设计它的原因。当然其他复杂sql也可以执行哦,难道是官方在吓人。。等你实践。


参考:

快看这里


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只要开始永远不晚

谢谢打赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值