如何在Sqoop导出中使用autoincrement-IDs

时间:2012-04-11 10:33:44

标签: hadoop sqoop

我在HDFS中有一个以制表符分隔的文本文件,并希望将其导出到MySQL表中。

由于textfile中的行没有数字id,如何导出到SQL INSERT(自动增量)期间自动设置ID的表?

如果我尝试导出(id是表中最后定义的属性),我会得到

java.util.NoSuchElementException
  at java.util.AbstractList$Itr.next(AbstractList.java:350)
  at entity.__loadFromFields(entity.java:996)

如果我使用自动生成的类并修改它以排除id属性,我会得到

java.io.IOException: java.sql.SQLException: No value specified for parameter 27

其中参数27为'id'。

版本是Sqoop 1.3.0-cdh3u3

3 个答案:

答案 0 :(得分:3)

在Sqoop 1.4.1中,在对应于自动增量字段的文本文件字段位置写一个“null”。导出到mySQL后,您将看到一个递增的自动签名ID。

答案 1 :(得分:0)

正如Sqoop邮件列表上的某人所说:

  • 创建一个没有ID的临时表
  • Sqoop-export into this table
  • 将此表的行复制到最终表(具有自动增量ID)

答案 2 :(得分:0)

我的源表是HIVE。对我有用的是我添加了一个名为id int的列,并将该列填充为NULL。在sqoop之后,mysql将接收insert(id,X,Y)值(null,“x_value,”y_value“)。然后mysql知道将id填充为自动增量。