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 - Datastax Enterprise 3.2 配置单元超时异常

java - 如何使带有外部库和文件的 Processing Sketch 在网站上运行?

TypeScript 2.1 接口(interface)与 import from 合并

hadoop - 如何用一个点从数字a格式化成千上万

hadoop - 有了Hive TEZ,Hive的LLAP有什么用?

java - 我正在尝试使用Hadoop MapReduce计算文本文件中 “pairs of word”的出现次数

ubuntu - 启动 Hive 给我一个 SessioniveMetaStoreClietnt 运行时异常

hive - 如何转义用作 HIVE 列名的保留字?

hadoop - 将外部jar复制到/home/hadoop/lib文件夹EMR Amazon时出错

linux - 如何将 Oracle 中的数据库模式导出到转储文件