用sqoop --update key 更新oracle 表的数据时报错

crystalnsd 2016-08-24 03:31:58
用sqoop --update key 更新oracle 表的数据时报错
代码:
sqoop export -D mapred.job.queue.name=${queueName} \
--connect ${oracle_mlndata_connection} \
--table MLN_RPT_USER_STUDY_STAT \
--username ${oracle_mlndata_username} --password ${oracle_mlndata_password} \
--update-mode allowinsert \
--update-key BUSINESS_UNIT,EMP_ID \
--export-dir ${sqoop_import_path}/MLN_RPT_USER_STUDY_STAT\
--columns PARENT_ID,COMPANY_ID,ORG_ID,BUSINESS_UNIT,USER_NAME,EMP_ID,STUDY_NUM,STUDY_PUBLIC_NUM,FINISH_NUM,MATCH_REQ_NUM,FINISH_REQ_NUM,CREATED_BY,CREATED_DATE,UPDATED_BY,UPDATED_DATE\
--input-null-string '\\N' --input-null-non-string '\\N'\
--input-fields-terminated-by '\001' \
--input-lines-terminated-by '\n';
exitCodeCheck $?;

错误日志:
16/08/24 15:25:59 INFO mapred.JobClient: Task Id : attempt_201606012041_216190_m_000003_2, Status : FAILED
java.io.IOException: Can't export data, please check task tracker logs
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:112)
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:364)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.io.IOException: java.sql.SQLException: Missing IN or OUT parameter at index:: 3
at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:220)
at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:46)
at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.write(MapTask.java:638)
at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80)
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:84)
... 10 more
Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 3
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1752)
at oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePreparedStatement.java:9784)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.addBatch(OraclePreparedStatementWrapper.java:1358)
at org.apache.sqoop.mapreduce.UpdateOutputFormat$UpdateRecordWriter.getPreparedStatement(UpdateOutputFormat.java:174)
at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.execUpdate(AsyncSqlRecordWriter.java:149)
at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:215)
... 14 more
...全文
1828 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsdajie 2017-10-23
  • 打赏
  • 举报
回复
我也遇到这个问题,--update-key指定多个列报错。问一下楼主解决这个问题了吗?
海会圣贤 2016-10-08
  • 打赏
  • 举报
回复
java.sql.SQLException: Missing IN or OUT parameter at index:: 3

20,807

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧