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