1

我想从 HDFS 中包含 epoch 的文本文件创建一个外部 Hive 表。假设文件位于/user/me/test.txt. 这是文件内容:

1354183921
1354183922

我安装了 Hive 0.8.1 并且应该能够使用类型 Timestamp,所以我创建了表:

hive> CREATE EXTERNAL TABLE test1 (epoch Timestamp)
      LOCATION '/user/me';

然后我查询了表:

SELECT * FROM test1;

并得到以下异常:

Failed with exception java.io.IOException:java.lang.IllegalArgumentException: 
Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]

创建外部表时我错过了什么吗?我很困惑,因为 Hive(自 0.8 起)在第二个支持 Unix 纪元格式的时间戳:https ://cwiki.apache.org/Hive/languagemanual-types.html#LanguageManualTypes-Timestamps

4

1 回答 1

2

Timestamp 字符串必须采用错误消息和链接中指定的格式 yyyy-mm-dd hh:mm:ss[.fffffffff]。要使用包含 epoch 的数据,您必须定义为 BIGINT,然后使用内置 UDF from_unixtime() 转换为表示日期的字符串。然后,您可以使用其他内置 UDF 日期函数来操作此日期。

于 2012-11-30T14:09:41.147 回答