sqoop export oracle number col RuntimeException:无法解析输入数据:' 1.0'

时间:2018-04-24 03:50:57

标签: oracle export double sqoop runtimeexception

我想导出一个文本表文件(输入字段以' \ t'终止,然后我将它保存到hdfs使用pyspark.DataFrame.write.csv(' output_history_with_ta_text', sep =' \ t'))从hdfs到oracle DB的表。 该表有一个名为training_accuracy的col,类型为NUMBER(Just NUMBER,而不是NUMBER(n,m))。 但我遇到了这个问题:

  

错误:java.io.IOException:无法导出数据,请在org.apache.sqoop上的org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:122)中检查失败的地图任务日志.mapreduce.TextExportMapper.map(TextExportMapper.java:39)org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) )org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793)org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)atg.apache.hadoop.mapred.YarnChild $ 2 .run(YarnChild.java:164)位于org.apache.hadoop.security.UserGroupInformation.doAs的javax.security.auth.Subject.doAs(Subject.java:415)的java.security.AccessController.doPrivileged(Native Method) (UserGroupInformation.java:1920)org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)引起:java.lang.RuntimeException:无法解析输入数据:' 1.0& #39;在PREDICTING_OUTPUT_BASE .__ loadFromFields(PREDICTING_OUTPUT_BASE.java:1302)at PREDICTING_OUTPUT_BASE.parse(PREDICTING_OUTPUT_BASE.java:1140)org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89)... 10更多引起:java java.util.ArrayList的.util.NoSuchElementException $ Itr.next(ArrayList.java:834)at PREDICTING_OUTPUT_BASE .__ loadFromFields(PREDICTING_OUTPUT_BASE.java:1297)... 12 more

问题在这里:

  

无法解析输入数据:' 1.0'

我的Sqoop命令是:

  

sqoop export --connect jdbc:oracle:thin:@ 192.168.1.3:1521:tmporacle --username admin --password admin --table TMP_TABLE --export-dir / user / hadoop_my / output_history_with_ta_text --input-fields -terminated by' \ t' --verbose --map-column-hive CREATE_DATE = java.sql.Timestamp,MODIFIED_DATE = java.sql.Timestamp,VERSION = java.sql.Date,TRAINING_ACCURACY = Double --map-column-java CREATE_DATE = java.sql。时间戳,MODIFIED_DATE = java.sql.Timestamp中,VERSION = java.sql.Date,TRAINING_ACCURACY =双

1 个答案:

答案 0 :(得分:0)

我发现oracle表中还有一个列与hive文本表不匹配。

像:

蜂房

| col_name | colA | colB |  colD   |
|----------------------------------|
| type     | str  | str  |  double |

的Oracle

| col_name | colA | colB | colC               | colD   |
|------------------------------------------------------|
| type     | str  | str  | VARCHAR2(80 BYTE)  | number |

在hive表中添加colC后,问题解决了