检索 HIVE“TIMESTAMP”列上的列时出错
Posted
技术标签:
【中文标题】检索 HIVE“TIMESTAMP”列上的列时出错【英文标题】:Getting error while retrieving columns on HIVE "TIMESTAMP" column 【发布时间】:2013-09-25 01:07:14 【问题描述】:在 Hive 中,我正在尝试在日志文件上创建表,我有以下格式的数据。
1000000000012311 1373346000 21.4 XX
1000000020017331 1358488800 16.9 年
第二个字段是 Unix 时间戳。我正在写以下 HIVE 查询:
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 手册并谷歌了它,但没有得到任何解决方案。
【问题讨论】:
您使用的是什么版本的 Hive,我认为 Hive v0.8.0 添加了时间戳类型,所以... 【参考方案1】:对于epoch,您可以定义为BIGINT,然后使用内置UDF,from_unixtime() 转换为代表日期的字符串。诸如“从日志中选择 from_unixtime(tdate)”之类的东西
此链接上的类似帖子:How to create an external Hive table with column typed Timestamp
【讨论】:
【参考方案2】:Hive 支持时间戳数据类型,但与 JDBC 一起使用时不能接受时间戳作为数据类型。但这在早期版本中是一个问题。从 Hive 版本 0.8.0 开始,此问题已得到修复。您可以签出这张 JIRA 票。
https://issues.apache.org/jira/browse/HIVE-2957
【讨论】:
以上是关于检索 HIVE“TIMESTAMP”列上的列时出错的主要内容,如果未能解决你的问题,请参考以下文章