【问题标题】:Sqoop Export to Oracle-Caused by: java.lang.RuntimeException: Can't parse input data: '\N'Sqoop 导出到 Oracle - 引起:java.lang.RuntimeException: Can't parse input data: '\N'
【发布时间】:2015-11-25 05:03:30
【问题描述】:

Sqoop 导出到 oracle 失败,出现以下异常

原因:java.lang.RuntimeException:无法解析输入数据:'\N'

我在 HDFS 中有空列。

下面是我使用的命令。

 sqoop export --connect jdbc:oracle:thin:@XXXXXXXXXXXXX \
             --username XX \
             --password XXXXX \
             --table XXXXXXXXXXXXXXXXXX\
             --export-dir '/datalake/qa/etl/XXXXXXX/XXXXXXXXXXXX' --input-fields-terminated-by ','  --input-null-string '\\N' --input-null-non-string '\\N'

我尝试了--input-null-string "\\\\N" --input-null-non-string "\\\\N" 仍然没有运气。

【问题讨论】:

    标签: sqoop


    【解决方案1】:

    问题是由文本中的 NUL 字符引起的。

    对于 oracle 数据库,我们不需要提及 --input-null-string 用于 Null 值,我以不同的方式尝试过认为这是问题的原因。

    我检查了失败的地图任务的日志文件,并在导致问题的字符串中找到了 NULL 字符。

    在使用 hive 查询导出到 HDFS 目录之前,我使用 regexp_replace 解决了这个问题 regexp_replace(regexp_replace(rtrim(A.chat_agent_text),',','.'),'\0','.')

    问题已解决,sqoop导出成功

    观察: 无法解析输入数据:“\N”并不总是与列的 Null 值相关

    【讨论】:

    • 我也遇到了同样的错误,但实际的错误是:Caused by: java.lang.NumberFormatException: For input string: "22673371CBxCBF-950",你能帮忙解决这个@yoga吗跨度>
    • 您要导出到 int/bigint 字段吗?请检查架构一次。这似乎是数据类型不匹配问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多