我想将一个文本表文件(输入字段以'\t'结尾)从hdfs导出到oracle db的表中,并使用pyspark.dataframe.write.csv('output\u history\u with \u ta\u text',sep='\t')将其保存到hdfs。该表有一个名为training\u accurity的列,类型是number(只是number,而不是number(n,m))。但我遇到了一个问题:
错误:java.io.ioexception:无法导出数据,请检查org.apache.sqoop.mapreduce.textexportmapper.map(textexportmapper)上失败的Map任务日志。java:122)在org.apache.sqoop.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)在org.apache.hadoop.mapred.yarnchild$2.run(yarnchild。java:164)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:415)在org.apache.hadoop.security.usergroupinformation.doas(用户组信息。java:1920)在org.apache.hadoop.mapred.yarnchild.main(yarnchild。java:158)原因:java.lang.runtimeexception:无法分析输入数据:“1.0”at predicting \u output \u base.\u loadfromfields(predicting \u output \u base)。java:1302)在predicting\u output\u base.parse(预测输出\u base。java:1140)在org.apache.sqoop.mapreduce.textexportmapper.map(textexportmapper。java:89) ... 还有10个原因:java.util.nosuchelementexception at java.util.arraylist$itr.next(arraylist。java:834)在预测\输出\基础上。\ loadfromfields(预测\输出\基础)。java:1297) ... 12个以上
这里的问题是:
无法分析输入数据:“1.0”
我的sqoop命令是:
sqoop导出--连接jdbc:oracle:thin:@192.168.1.3:1521:tmporacle--username admin--password admin--table tmp \u table--export dir/user/hadoop \u my/output \u history \u with \u ta \u text--input fields terminated by'\t'--verbose--map column hive create \u date=java.sql.timestamp,modified \u date=java.sql.timestamp,version=java.sql.date,training\u accurity=double—Map列java create\u date=java.sql.timestamp,modified\u date=java.sql.timestamp,version=java.sql.date,training\u accurity=double
1条答案
按热度按时间dojqjjoe1#
我发现oracle表还有一列与hive text表不匹配。
比如:
Hive
Oracle
在hive表中添加colc之后,问题就解决了