如何使用sqoop将数据从Hive导出到rdbms时使用primarykey键

时间:2015-01-13 08:42:31

标签: hadoop export hive sqoop

这是我的场景我在hive仓库中有数据,我想将这些数据导出到mysql中名为“sample”的“test”数据库的表中。如果一列是sample.test中的主键并且hive(我们正在导出)中的数据在该键下具有重复值会发生什么,那么显然作业将失败,那么我怎么能处理这种情况呢? / p>

先谢谢

2 个答案:

答案 0 :(得分:2)

如果希望mysql表只包含重复项中的最后一行,可以使用以下命令:

sqoop export --connect jdbc:mysql://<*ip*>/test -table sample --username root -P --export-dir /user/hive/warehouse/sample --update-key <*primary key column*> --update-mode allowinsert

导出时,Sqoop默认将每行转换为insert语句。通过指定 - update-key ,可以将每一行转换为更新语句。但是,如果没有特定行进行更新,则默认情况下会跳过该行。这可以通过使用 - update-mode allowinsert 来覆盖,它允许将这些行转换为插入语句。

答案 1 :(得分:0)

执行导出操作,通过从主键中删除重复项来按摩您的数据。对该主列进行区分,然后导出到mysql。