如何创建带有列类型时间戳外部蜂巢表(How to create an external Hive t

2019-07-04 06:42发布

我想从含在HDFS划时代的文本文件创建一个外部蜂巢表。 比方说,该文件位于/user/me/test.txt 。 这里的文件内容:

1354183921
1354183922

我有蜂巢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]

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

Answer 1:

时间戳字符串必须是在错误消息和链接,YYYY-MM-DD HH指定的格式:MM:SS [.fffffffff]。 使用含有划时代的数据,你必须定义为BIGINT,然后使用内置的UDF,FROM_UNIXTIME()转换为表示日期的字符串。 然后,你可以用其他的内置UDF日期函数来处理这个日期。



文章来源: How to create an external Hive table with column typed Timestamp