在Hive中,我正在尝试在日志文件上创建表,我有以下格式的数据。
1000000000012311 1373346000 21.4 XX
1000000020017331 1358488800 16.9 YY
在第二个字段中是Unix时间戳。我正在写下HIVE QUERY:
CREATE EXTERNAL TABLE log(user STRING, tdate TIMESTAMP, spend DOUBLE, state STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\n' LOCATION '/user/XXX/YYY/ZZZ';
创建表。但是当我试图从表Select * form log limit 10';
获取数据时
我收到了以下错误。
异常失败java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException:错误评估tdate
我已经检查了HIVE手册并且也谷歌了,但没有得到任何解决方案。
答案 0 :(得分:2)
对于纪元,你可以定义为BIGINT,然后使用内置的UDF,from_unixtime()转换为表示日期的字符串。有些事情比如“从日志中选择from_unixtime(tdate)”
此链接上的类似帖子: How to create an external Hive table with column typed Timestamp
答案 1 :(得分:0)
Hive支持数据类型时间戳,但与JDBC一起使用时,不能接受Timestamp作为数据类型。但这是早期版本中的一个问题。从Hive版本0.8.0,这个问题是固定的。你可以查看这张JIRA票。