Hive 日期/时间戳列

Roo*_*kie 2 hadoop hive date hiveql

我有一些关于 HDFS 的数据,我正在尝试设置这些数据以通过 hive 进行查询。数据采用逗号分隔的文本文件的形式。文件中的一列是日期/时间列,如下所示:

Wed Aug 29 16:16:58 CDT 2018
Run Code Online (Sandbox Code Playgroud)

当我尝试读取使用以下脚本创建的 Hive 表时,我得到 NULL 作为为此列读取的值。

use test_db;
drop table ORDERS;

create external table ORDERS(
    SAMPLE_DT_TM TIMESTAMP
    ...
)
row format delimited
fields terminated by ',' 
stored as textfile
location '/user/data';
Run Code Online (Sandbox Code Playgroud)

当我用 STRING 替换 TIMESTAMP 时,我能够读取列值。但不确定如何将其作为 Hive 支持的适当日期格式读取...

hla*_*gos 5

从 Hive 1.2 开始,您可以像这样设置日期格式。

ALTER TABLE ORDERS SET SERDEPROPERTIES ("timestamp.formats"="EEE MMM dd HH:mm:ss zzz yyyy");
Run Code Online (Sandbox Code Playgroud)

从文档。

在表级别,可以通过向 SerDe 属性“timestamp.formats”(从带有 HIVE-9298 的 1.2.0 版开始)提供格式来支持替代时间戳格式。例如,yyyy-MM-dd'T'HH:mm:ss.SSS,yyyy-MM-dd'T'HH:mm:ss。