首页 > 解决方案 > 有没有办法在 Hive CREATE TABLE 语句本身中为传入数据指定日期/时间戳格式?

问题描述

我有一个 CSV 文件,其中包含以下格式的日期和时间戳值。例如:

Col1|col2
01JAN2019|01JAN2019:17:34:41

但是,当我在 create 语句中将 Col1 定义为 Date 并将 Col2 定义为 Timestamp 时,Hive 表NULL会在我查询时简单地返回。

CREATE EXTERNAL TABLE IF NOT EXISTS my_schema.my_table
(Col1 date,
Col2 timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘|’
STORED AS TEXTFILE
LOCATION 'my_path';

相反,如果我简单地定义数据类型,string那么它就可以工作。但这不是我希望我的桌子的样子。

我希望表能够以正确的类型读取传入的数据。我怎样才能做到这一点?是否可以用CREATE语句本身定义传入数据的预期数据格式?

有人可以帮忙吗?

标签: hivetimestamphiveqlcreate-tablehiveddl

解决方案


从 Hive 1.2.0 开始,可以提供额外的 SerDe 属性"timestamp.formats"。有关更多详细信息,请参阅此 Jira:HIVE-9298

ALTER TABLE timestamp_formats SET SERDEPROPERTIES ("timestamp.formats"="ddMMMyyyy:HH:mm:ss");

推荐阅读