【问题标题】:Hive date is displayed as NULL when table is queried查询表时 Hive 日期显示为 NULL
【发布时间】:2015-08-31 12:11:52
【问题描述】:

我在 Hive 中有一个表,其中包含 Date 数据类型的字段。表是一个外部表,日期值在文本文件"04/14/2006 00:00:00" 中如下所示,当我查询该表时,该字段为 NULL。有人可以帮我获取文本文件中的日期吗?

【问题讨论】:

    标签: date timestamp hive


    【解决方案1】:

    时间戳

    支持具有可选纳秒精度的传统 UNIX 时间戳。 整数类型:解释为 UNIX 时间戳(以秒为单位) 浮点数值类型:解释为 UNIX 时间戳,以秒为单位,小数精度 字符串:符合 JDBC 的 java.sql.Timestamp 格式“YYYY-MM-DD HH:MM:SS.fffffffff”(9 位小数精度)

    时间戳被解释为无时区,并存储为与 UNIX 纪元的偏移量。提供了方便的时区转换 UDF(to_utc_timestamp、from_utc_timestamp)。

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

    日期

    DATE 值以 YYYY-MM-DD 的形式描述特定的年/月/日。为了 例如,日期“2013-01-01”。日期类型没有时间组件。 Date 类型支持的值范围是 0000-01-01 到 9999-12-31,取决于 由原始 Java Date 类型支持。

    Source

    因此,如果您需要按原样打印日期,那么将建议使用字符串数据类型而不是日期时间数据类型。

    【讨论】:

      【解决方案2】:

      如果您的时间数据格式不是 YYYY-MM-DD HH:MM:SS 并且如果您将 timestamp 设置为 数据类型 在 HIVE 表中,则 hive 在查询时会显示 NULL。

      您可以在这里使用一个简单的技巧,在 Microsoft Excel 中打开您的 .csv 数据文件。选择整个列,右键单击>格式化单元格>自定义>键入在文本框中所需的格式(即 YYYY-MM-DD HH:MM:SS),然后按确定/应用。然后,您的数据将以 Hive 可接受的时间戳格式显示,并将适当地加载到 HIVE 中。您可以通过查询 HIVE.Cheers 来检查它:)

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 1970-01-01
        • 2018-02-25
        • 1970-01-01
        • 2020-02-04
        • 2019-12-04
        • 1970-01-01
        • 2020-12-30
        • 1970-01-01
        相关资源
        最近更新 更多