查询表时Hive日期显示为NULL

问题描述 投票:0回答:2

我在 Hive 中有一个表,其中包含日期数据类型的字段。表是外部表,文本文件中的日期值如下

"04/14/2006 00:00:00"
,当我查询表时,该字段得到 NULL。有人可以帮我获取日期,因为它就像文本文件中的那样。

date timestamp hive
2个回答
0
投票

时间戳

支持传统的 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 类型的支持。

来源

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


-1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.