我试图理解sqoop导出是如何工作的,我在mysql中有一个表站点,它包含两列id和url,并包含两行
1,www.yahoo.com
2,www.gmail.com
表没有主键
当我通过执行下面的命令将hdfs中的条目导出到mysql site表时,它会插入重复的条目
我在hdfs中有以下条目
1,www.one.com
2,www.2.com
3,www.3.com
4,www.4.com
``` `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)
即使删除--update键,结果也是一样的。发生这种情况是因为表没有主键吗
我在clouderaquickstart vm中使用sqoop1.4.5
有什么帮助吗?
1条答案
按热度按时间avwztpqn1#
根据sqoop文件,
mysql将尝试插入新行,如果插入失败并出现重复唯一键错误,它将更新相应的行。
所以,不是吗
--update-key
列应该是主键或具有唯一索引。在内部,sqoop将创建如下查询
INSERT INTO table (id,email) VALUES (1,www.one.com) ON DUPLICATE KEY UPDATE email=www.one.com
对于所有其他值,依此类推。