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>'的主要内容,如果未能解决你的问题,请参考以下文章

Dataproc 上的 Sqoop 无法将数据导出为 Avro 格式

Sqoop 在导出到 Oracle 期间失败

1.131.15 Sqoop导出数据Export使用

SQOOP 导出失败

映射成功后 sqoop 导出失败

大数据:Sqoop-导出错误