作者:xlenny | 来源:互联网 | 2023-08-30 19:57
应用场景:1将原有关系数据库的数据传递到大数据平台如hive、hbase。2将大数据平台的数据传递到关系数据库中。简单应用:表对表的同步。复杂应用:在同步时可以通过query-sql来指定所要传递的数
应用场景:
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也可以执行哦,难道是官方在吓人。。等你实践。
参考:
快看这里