如何在使用sqoop将数据从hive导出到rdbms时处理primarykey

cczfrluj  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(453)

下面是我的一个场景,我在hive仓库中有一个数据,我想将这个数据导出到mysql中“test”数据库的一个名为“sample”的表中。如果sample.test中有一列是主键,并且配置单元(我们正在导出)中的数据在该键下有重复的值,那么很明显作业将失败,那么我如何处理这种情况?
提前谢谢

t5zmwmid

t5zmwmid1#

在执行导出操作之前,通过删除主键中的重复项来处理数据。在主列上使用distinct,然后导出到mysql。

o3imoua4

o3imoua42#

如果希望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语句。但是,如果特定行不存在以进行更新,则默认情况下会跳过该行。这可以通过使用--update模式allowinsert来重写,它允许将这些行转换为insert语句。

相关问题