【发布时间】:2016-08-26 06:38:12
【问题描述】:
我有一个大数据,其中一个字段类似于 Wed Sep 15 19:17:44 +0100 2010,我需要将该字段插入 Hive。
我在选择数据类型时遇到了麻烦。我尝试了时间戳和日期,但在从 CSV 文件加载时得到空值。
【问题讨论】:
标签: date datetime hadoop hive timestamp
我有一个大数据,其中一个字段类似于 Wed Sep 15 19:17:44 +0100 2010,我需要将该字段插入 Hive。
我在选择数据类型时遇到了麻烦。我尝试了时间戳和日期,但在从 CSV 文件加载时得到空值。
【问题讨论】:
标签: date datetime hadoop hive timestamp
数据类型是字符串,因为它是文本。如果你想转换它,我会建议一个 TIMESTAMP。但是,您需要在加载数据时或之后(甚至更好)之后自己进行此转换。
要转换为时间戳,可以使用以下语法:
CAST(FROM_UNIXTIME(UNIX_TIMESTAMP(<date_column>,'FORMAT')) as TIMESTAMP)
不过,您的格式似乎很复杂。我的建议是将它作为一个字符串加载,然后对第一条记录进行简单的查询,直到你让它工作为止。
SELECT your_column as string_representation,
CAST(FROM_UNIXTIME(UNIX_TIMESTAMP(<date_column>,'FORMAT')) as TIMESTAMP) as timestamp_representation
FROM your_table
LIMIT 1
您可以在此处找到有关格式的更多信息:http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
我的建议是先连接一些子字符串,然后在查看时间和时区等之前尝试仅转换日、月、年部分。
【讨论】: