SQOOP Export中的更新无效

时间:2015-08-07 22:19:19

标签: mysql sqoop

我正在使用Hadoop 2.5.0和Sqoop 1.4.5。

我正在尝试使用以下SQOOP导出命令在MySQL中更新:

sqoop export --connect "connect_string" --username "user" --password "pass" --table "table_name" --columns "A,B,created_dtm,D,E" --export-dir "export_dir" --input-null-string "" --input-null-non-string "" --input-escaped-by \\ --input-fields-terminated-by "," --input-lines-terminated-by "\\n" --update-key A --update-mode "allowinsert" -m 1;

A在表结构中定义为唯一键。

但我得到以下异常并且工作挂起:

org.apache.sqoop.mapreduce.AsyncSqlOutputFormat: Got exception in update thread: java.sql.BatchUpdateException: Unknown column 'created_dtm' in 'field list'
    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1819)
    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1281)
    at org.apache.sqoop.mapreduce.AsyncSqlOutputFormat$AsyncSqlExecThread.run(AsyncSqlOutputFormat.java:231)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'created_dtm' in 'field list'

我尝试了以下多种指定列的方法:

--columns A,B,created_dtm,D,E
--columns 'A','B','created_dtm','D','E'
--columns "A,B,created_dtm,D,E"

但以上都没有奏效。当表格为空时第一次执行上述SQOOP命令时,它会成功插入所有记录,因为我已经指定了--update-mode =" allow-insert",但是在我尝试之后更新相同的数据。这项工作每次都失败了。

有人可以建议这里有什么问题吗?

表结构如下:

CREATE TABLE if not exists schema.`table` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `A` varchar(254) NOT NULL,
  `B` bigint(20) DEFAULT NULL,
  `created_dtm` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `C` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `E` bigint(20) NOT NULL,
  `D` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  UNIQUE KEY `u_table` (`A`),
  KEY `i_table_C` (`C`)
)

0 个答案:

没有答案