sqoop合并失败

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

我想练习sqoop合并命令。我所做的是从mysql数据库导入数据到hdfs,然后用1个update和1个insert更新源表,我的表 id 作为主键和 time 作为时间戳。
接下来我再次用 --incremental=lastmodified --check-column="time" 选项。
然后sqoop合并了,但是失败了,错误如下。我认为以前导入的数据集和最近导入的数据集有些不匹配,但无法理解错误所在。那是因为用 --check-column=time ? 如果我用 --where 它起作用了。
我用过:-

--Initial load
sqoop import \
  --connect "jdbc:mysql://quickstart.cloudera:3306/testdb" \
  --username=root \
  --password=cloudera \
  --table Customers \
  --as-textfile \
  --target-dir=/user/cloudera/sqoop_import/sqoop_merge/Customers

sqoop import \
  --connect "jdbc:mysql://quickstart.cloudera:3306/testdb" \
  --username=root \
  --password=cloudera \
  --table Customers \
  --as-textfile \
  --target-dir=/user/cloudera/sqoop_import/sqoop_merge/Customers_delta \
  --incremental lastmodified \
  --check-column "time" \
  --last-value '2016-08-24 22:04:56.0'

sqoop merge --merge-key department_id \
  --new-data /user/cloudera/sqoop_import/sqoop_merge/Customers_delta \
  --onto /user/cloudera/sqoop_import/sqoop_merge/Customers \
  --target-dir /user/cloudera/sqoop_import/sqoop_merge/Customers_merge \
  --class-name Customers \
  --jar-file /tmp/sqoop-cloudera/compile/d73387fb05f4fcb0d38725806fe52b30/Customers.jar

错误是:-
16/08/24 22:49:41 info mapreduce.job:Map13%reduce 0%16/08/24 22:49:42 info mapreduce.job:任务id:尝试\u 1471947772048 \u 0032 \u m \u000003 \u 2,状态:失败错误:java.io.ioexception:无法连接null键上的值。是否指定了存在的键列?在org.apache.sqoop.mapreduce.mergemapperbase.processrecord(mergemapperbase。java:79)在org.apache.sqoop.mapreduce.mergetextmapper.map(mergetextmapper。java:58)在org.apache.sqoop.mapreduce.mergetextmapper.map(mergetextmapper。java:34)在org.apache.hadoop.mapreduce.mapper.run(mapper。java:145)在org.apache.hadoop.mapred.maptask.runnewmapper(maptask。java:764)在org.apache.hadoop.mapred.maptask.run(maptask。java:340)在org.apache.hadoop.mapred.yarnchild$2.run(yarnchild。java:167)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:415)在org.apache.hadoop.security.usergroupinformation.doas(用户组信息。java:1554)在org.apache.hadoop.mapred.yarnchild.main(yarnchild。java:162)
任何找出原因的线索都会很有帮助。谢谢。

k97glaaz

k97glaaz1#

你的table有 id 主键字段。
使用 --merge-key id 听你指挥。
根据你的错误记录,
无法联接null键上的值。是否指定了存在的键列?
看来 department_id 不是表中的字段。

相关问题