在HIVE“TIMESTAMP”列上检索列时出错

时间:2013-09-25 01:07:14

标签: sql apache hive bigdata

在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手册并且也谷歌了,但没有得到任何解决方案。

2 个答案:

答案 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票。

https://issues.apache.org/jira/browse/HIVE-2957