我想从包含HDFS中的纪元的文本文件创建外部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
答案 0 :(得分:2)
时间戳字符串必须采用错误消息和链接中指定的格式,yyyy-mm-dd hh:mm:ss [.fffffffff]。要使用包含epoch的数据,您必须定义为BIGINT,然后使用内置UDF from_unixtime()转换为表示日期的字符串。然后你可以使用另一个built-in UDF date functions来操纵这个日期。