Sqoop 导出失败。无法解析输入数据:'<data>'
Posted
技术标签:
【中文标题】Sqoop 导出失败。无法解析输入数据:\'<data>\'【英文标题】:Sqoop export is failing. Can't parse input data:'<data>'Sqoop 导出失败。无法解析输入数据:'<data>' 【发布时间】:2018-07-04 21:39:17 【问题描述】:当我从终端运行 sqoop 导出命令时,它工作正常。但是,如果我从 oozie 工作流中运行相同的命令,它会抛出以下错误。
ror: java.io.IOException: Can't export data, please check failed map task logs
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:122)
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:787)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
Caused by: java.lang.RuntimeException: Can't parse input data: '2018-05-14,967,893,74,8863.330000000005,7617.07,1246.26'
at adjust_jazz_compare.__loadFromFields(adjust_jazz_compare.java:512)
at adjust_jazz_compare.parse(adjust_jazz_compare.java:430)
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89)
... 10 more Caused by: java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(ArrayList.java:854)
at adjust_jazz_compare.__loadFromFields(adjust_jazz_compare.java:482)
... 12 more
下面是我正在使用的命令
export --connect <jdbc> --username <user> --password <pass> --table <table> --export-dir <dir> --input-fields-terminated-by ',' --input-lines-terminated-by '\n'
hive 中的表属性
hive.inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:field.delim=,, serialization.format=1), bucketCols:[], sortCols:[], parameters:, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:), storedAsSubDirectories:false), partitionKeys:[], parameters:totalSize=3973, numRows=70, rawDataSize=3903, COLUMN_STATS_ACCURATE=true, numFiles=1, transient_lastDdlTime=1530647041, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE)
【问题讨论】:
【参考方案1】:包含的行
"'2018-05-14,967,893,74,8863.330000000005,7617.07,1246.26'"
无法在 sqoop 中解析。
从 Hive 终端检查此行的正确格式。可能是一些特殊字符或一些空格,因为无法解析此数据。
请分享 hive 中存在的表架构。以及您的 hive 查询。
【讨论】:
我已经用表格属性更新了我的问题。我只是想将我的配置单元完整表导出到 mysql。无具体查询 我的疑问是,如果我可以通过终端做到这一点,为什么它会因 oozie 工作而失败?【参考方案2】:您能说明一下您是如何创建表格的吗?也许您忘记了 Hive 中的字段分隔符?
FIELDS TERMINATED BY ','
示例创建表代码:
CREATE TABLE IF NOT EXISTS employee (
eid int,
name String,
salary String,
destination String)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
【讨论】:
以上是关于Sqoop 导出失败。无法解析输入数据:'<data>'的主要内容,如果未能解决你的问题,请参考以下文章