转换列时出错:0到TIMESTAMP

时间:2014-08-25 15:55:35

标签: database hadoop hive impala

我在HDFS上存储的文本文件中的数据具有以下目录结构:

/出口/年/ 07 /月/小时/ SEARCHES /

/exported/2014/07/01/00/SEARCHES/part-m-00000
                                 part-m-00001
/exported/2014/07/01/02/SEARCHES/part-m-00000
                                 part-m-00001
                                 part-m-00003
.
.
.
.
/exported/2014/08/01/09/SEARCHES/part-m-00005

所以我在impala中使用以下查询创建了一个外部表:

CREATE EXTERNAL TABLE搜索(time_stamp TIMESTAMP,url STRING,域STRING,............关键字STRING)PARTITIONED BY(年份INT,月份INT,日期INT,小时INT)行格式分隔字段以'\ t';

结尾

将数据加载到其中:

ALTER TABLE search_mmx ADD PARTITION(年= 2014,月= 08,日= $ {d},小时= $ {h})LOCATION'/ exported / 2014/08 / $ {d} / $ {h} /的搜索/';

所有可用日期&小时。它已成功加载,我通过计算行数来验证这一点。

但是当我尝试“从搜索限制10中选择*”时它给出错误“错误转换列:0到TIMESTAMP(数据是:1406965816)”

time_stamp的原始值是Unix时间戳格式。如何将它从unix时间戳转换为Impala TIMESTAMP数据类型?

由于

1 个答案:

答案 0 :(得分:0)

来自documentation for the TIMESTAMP data type

  

你可以cast一个整数或浮点值N到TIMESTAMP,产生一个超过纪元日期开始(1970年1月1日)N秒的值。

此外:

  

注意:在Impala 1.3及更高版本中,FROM_UNIXTIME()和UNIX_TIMESTAMP()functions允许更广泛的格式字符串,在元素顺序,字母占位符重复和分隔符字符方面具有更大的灵活性。有关详细信息,请参阅日期和时间函数。