Hadoop 如何在使用sqoop将数据从配置单元导出到rdbms时处理primarykey

Hadoop 如何在使用sqoop将数据从配置单元导出到rdbms时处理primarykey,hadoop,export,hive,sqoop,Hadoop,Export,Hive,Sqoop,这是我的一个场景,我在hive warehouse中有一个数据,我想将这些数据导出到mysql中“test”数据库的一个名为“sample”的表中。如果sample.test中有一列是主键,而配置单元(我们正在导出)中的数据在该键下有重复值,那么很明显作业将失败,那么我如何处理这种情况呢 提前感谢在执行导出操作之前,通过删除主键中的重复项来按摩数据。在主列上使用distinct,然后导出到mysql。如果希望mysql表只包含重复项中的最后一行,可以使用以下方法: sqoop export --

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


提前感谢

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

如果希望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导出--连接jdbc:mysql:///test -表sample--用户名root-P--导出目录/user/hive/warehouse/sample--更新键--更新模式allowinsert

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

在这种情况下,您需要删除重复的行。。。。。或者,如果需要进一步帮助,请粘贴模式和示例记录。