【问题标题】:Sqoop date issue when importing from oracle从 oracle 导入时的 Sqoop 日期问题
【发布时间】:2020-12-03 18:24:44
【问题描述】:

我正在尝试将一个巨大的表从 oracle 10g 导入到 HDFS(GCS,因为我将 sqoop 与 Google Cloud Dataproc 一起使用)作为 AVRO。当表格没有任何日期列时一切正常,但是当它有某些日期时,导入的日期非常错误。

喜欢:Oracle 数据 -> 30/07/76 和 HDFS 数据 -> 14976-07-30 20:02:00.0
喜欢:Oracle 数据 -> 26/03/84 和 HDFS 数据 -> 10384-03-26 20:32:34.0

我已经将日期字段映射为字符串,以使它们像这样。我正在使用默认的 sqoop 方式导入,该方式将日期字段作为纪元整数,但转换也不正确。

喜欢:Oracle 数据 -> 01/01/01 和 HDFS 数据 -> -62135769600000,当它应该是 978314400000 时

拜托,希望有人帮我解决这个问题。 谢谢

附加信息:

我正在运行的 Sqoop 命令

import -Dmapreduce.job.user.classpath.first=true -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect=$JDBC_STR --username=$USER --password=$PASS --target-dir=gs://sqoop-dev-out-files/new/$TABLE --num-mappers=10 --fields-terminated-by="\t" --lines-terminated-by="\n" --null-string='null' --null-non-string='null' --table=$SCHEMA.$TABLE --as-avrodatafile --map-column-java="DATACADASTRO=String,DATAINICIAL=String,DATAFINAL=String"

Sqoop 版本:1.4.7
JDBC 版本:6

【问题讨论】:

    标签: oracle date hadoop import sqoop


    【解决方案1】:

    我认为你在 oracle 中的日期是 01/01/0001,试试 to_char(COLUMN,'DD/MM/YYYY')。

    我的问题是我的日期实际上是 01/01/0001,因为用户输入错误,我无法更新原始 oracle 数据库中的列。

    我的问题是转换为 unix 应该是 -62135596800000,但它却是 -62135769600000(30/12/0000)。

    起初,我以为是时区问题,但实际上相差两天。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多