我正在尝试设置要通过配置单元查询的HDFS上的一些数据。数据采用逗号分隔的文本文件的形式。文件中的列之一是日期/时间列,如下所示:
Wed Aug 29 16:16:58 CDT 2018
当我尝试读取使用以下脚本创建的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';
当我用STRING替换TIMESTAMP时,我能够读取列值。但不确定如何将其读取为Hive支持的适当日期格式...
答案 0 :(得分:4)
在Hive 1.2中,您可以像这样设置日期格式。
ALTER TABLE ORDERS SET SERDEPROPERTIES ("timestamp.formats"="EEE MMM dd HH:mm:ss zzz yyyy");
来自文档。
在表级别,可以通过以下方式支持其他时间戳格式 将格式提供给SerDe属性“ timestamp.formats”(从 使用HIVE-9298发布1.2.0)。例如, yyyy-MM-dd'T'HH:mm:ss.SSS,yyyy-MM-dd'T'HH:mm:ss。