hadoop - 使用 sqoop 将数据从 Hive 导出到 rdbms 时如何处理主键

标签 hadoop export hive sqoop

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

提前致谢

最佳答案

如果你希望你的 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 默认将每一行转换为插入语句。通过指定--update-key,每一行都可以转换为一条更新语句。但是,如果特定行不存在以供更新,则默认情况下会跳过该行。这可以通过使用 --update-mode allowinsert 来覆盖,它允许将此类行转换为插入语句。

关于hadoop - 使用 sqoop 将数据从 Hive 导出到 rdbms 时如何处理主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27917940/

相关文章:

hadoop - Hive-UDF怎么了?如何设置Hive的 map 编号?

javascript - ES6 导入语句的好处

java - 神秘导出apk

hadoop - 在 hive 的 'Insert Overwrite'动态分区查询中设置分区位置

java - 如何设置hadoop环境变量

user-interface - 使用 Hadoop 的 GUI

python - 如何将图像导出到 GIMP 中的子目录?

hadoop - 带有Iceberg和S3的独立配置单元metastore

mysql - sql中歌曲的性别

hadoop - 是否可以将数据作为流输入到MapReduce作业中