sqoop导出插入重复条目

mbjcgjjk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(448)

我试图理解sqoop导出是如何工作的,我在mysql中有一个表站点,它包含两列id和url,并包含两行

  1. 1,www.yahoo.com
  2. 2,www.gmail.com

表没有主键
当我通过执行下面的命令将hdfs中的条目导出到mysql site表时,它会插入重复的条目
我在hdfs中有以下条目

  1. 1,www.one.com
  2. 2,www.2.com
  3. 3,www.3.com
  4. 4,www.4.com
  5. ``` `sqoop export --table site --connect jdbc:mysql://localhost/loudacre -- username training --password training --export-dir /site/ --update-mode allowinsert --update-key id` 因此,与其更新已经存在的id,不如再次插入重复的id(表示两个1,1代表www.one.com 1代表www.yahoo.com)
  6. 即使删除--update键,结果也是一样的。发生这种情况是因为表没有主键吗
  7. 我在clouderaquickstart vm中使用sqoop1.4.5
  8. 有什么帮助吗?
avwztpqn

avwztpqn1#

根据sqoop文件,
mysql将尝试插入新行,如果插入失败并出现重复唯一键错误,它将更新相应的行。
所以,不是吗 --update-key 列应该是主键或具有唯一索引。
在内部,sqoop将创建如下查询 INSERT INTO table (id,email) VALUES (1,www.one.com) ON DUPLICATE KEY UPDATE email=www.one.com 对于所有其他值,依此类推。

相关问题