Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 将列0转换为时间戳时出错_Database_Hadoop_Hive_Impala - Fatal编程技术网

Database 将列0转换为时间戳时出错

Database 将列0转换为时间戳时出错,database,hadoop,hive,impala,Database,Hadoop,Hive,Impala,我将文本文件中的数据存储在HDFS上,目录结构如下: /导出/年/07/月/h/搜索/ /exported/2014/07/01/00/SEARCHES/part-m-00000 part-m-00001 /exported/2014/07/01/02/SEARCHES/part-m-00000 part-m-00001

我将文本文件中的数据存储在HDFS上,目录结构如下:

/导出/年/07/月/h/搜索/

/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中创建了一个外部表:

创建外部表搜索时间戳时间戳、url字符串、域字符串……关键字字符串按年整数、月整数、日整数、小时整数行格式分隔,以“\t”结尾的字段

并通过以下方式将数据加载到其中:

ALTER TABLE search_mmx ADD PARTITION year=2014,month=08,day=${d},hour=${h}位置'/exported/2014/08/${d}/${h}/SEARCHES/'

适用于所有可用的日期和时间。它已成功加载,我通过计算行数验证了这一点

但当我尝试从搜索限制10中选择*时;将列0转换为时间戳数据为1406965816时出错

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

感谢来自以下网站的

您可以将整数值或浮点值N转换为时间戳,生成一个距离纪元日期1970年1月1日开始时间N秒的值

此外:

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


我们可以这样做吗?我在Vetica COPY public.test unix_timestamp FILLER VARCHAR15中使用过,datetime AS TO_timestamp unix_timestamp SOURCE Hdfs。。。。。筛选器BZip分隔符E'\t';要在加载到表中时动态地将unix\u时间戳转换为时间戳?如果将CREATE语句更改为time\u stamp STRING,则从搜索表中选择时,应该能够将time\u stamp转换为时间戳。例如,您可以使用ALTER TABLE、CREATE TABLE作为SELECT或CREATE VIEW来更改搜索或创建另一个表/视图,其中time\u stamp列转换为TIMESTAMP而不是字符串。当数据被摄取到表中时,不能立即执行此操作,因为我们将不断向该表添加数据,并删除超过90天的数据。因此,我们希望在开始时做一些事情,而不是在查询时做,以避免查询处理中的延迟。