【问题标题】:HDFS String data to timestamp in hive tableHDFS字符串数据到hive表中的时间戳
【发布时间】:2015-03-26 21:19:33
【问题描述】:

嗨,我在 HDFS 中有一个数据作为字符串 '2015-03-26T00:00:00+00:00' ..如果我想将此数据加载到 Hive 表中(列作为时间戳)。我无法加载,我得到空值。

如果我将列指定为字符串,我会将数据放入配置单元表 但是如果我将列指定为时间戳,我将无法加载数据,并且我会在该列中获取所有 NULL 值。

例如:HDFS - '2015-03-26T00:00:00+00:00'
蜂巢表 - 创建表 t1(my_date 字符串) 我可以得到输出 - '2015-03-26T00:00:00+00:00'

如果我指定创建表 t1(my_date 作为时间戳)--我可以看到所有空值

谁能帮我解决这个问题

【问题讨论】:

    标签: hadoop hive hdfs


    【解决方案1】:

    文本文件中的时间戳必须使用格式 yyyy-mm-dd hh:mm:ss[.f...]。如果它们是另一种格式,则将它们声明为适当的类型(INT、FLOAT、STRING 等)并使用 UDF 将它们转换为时间戳。

    通过以下链接:

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-Timestamps

    【讨论】:

    • 我们可以在 hive 查询中进行任何转换,以便将字符串数据转换为时间戳吗?
    • 使用 UDF 将它们转换为时间戳。
    【解决方案2】:

    您必须使用临时表。在暂存表中加载为字符串,在最终表中使用 UDF 如下所示将字符串值转换为时间戳

    from_unixtime(unix_timestamp(column_name, 'dd-MM-yyyy HH:mm'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      相关资源
      最近更新 更多