我想练习sqoop merge命令。
我所做的是我从MySQL DB导入数据到HDFS,然后用1更新和1插入更新源表,我的表有id
作为主键,time
作为TIMESTAMP。
接下来,我再次使用--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:地图13%减少0% 16/08/24 22:49:42 INFO mapreduce.Job:任务ID:attempt_1471947772048_0032_m_000003_2,状态:未通过 错误:java.io.IOException:无法在null键上连接值。您是否指定了存在的键列? at org.apache.sqoop.mapreduce.MergeMapperBase.processRecord(MergeMapperBase.java:79) at org.apache.sqoop.mapreduce.MergeTextMapper.map(MergeTextMapper.java:58) at 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) at java.security.AccessController.doPrivileged(Native Method) 在javax.security.auth.Subject.doAs(Subject.java:415) 在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1554) 在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
找出原因的任何线索都会非常有帮助。感谢。
答案 0 :(得分:0)
您的表具有$(document).ready(function () {
if (localStorage.getItem('click') == true) {
window.setTimeout(function() {
$('body').scrollTop($("#dealProductAnchor").offset().top);
});
localStorage.removeItem('click');
}
});
主键字段。
在命令中使用id
。
根据您的错误日志,
无法在null键上加入值。您是否指定了存在的键列?
似乎--merge-key id
不是您表格中的字段。