HDFS字符串数据到hive表中的时间戳

时间:2015-03-26 21:19:33

标签: hadoop hive hdfs

嗨我在HDFS中有一个字符串数据' 2015-03-26T00:00:00 + 00:00' ..如果我想将这些数据加载到Hive表(列为时间戳)。我无法加载,我得到空值。

如果我将列指定为字符串我将数据导入hive表 但如果我将列指定为时间戳我无法加载数据,并且我在该列中获得所有NULL值。

例如:HDFS - ' 2015-03-26T00:00:00 + 00:00'
 hive table- create table t1(my_date string) 我可以输出 - ' 2015-03-26T00:00:00 + 00:00'

如果我指定create table t1(my_date as timestamp) - 我可以看到所有空值

任何人都可以帮助我吗

2 个答案:

答案 0 :(得分:0)

文本文件中的时间戳必须使用yyyy-mm-dd hh:mm:ss [.f ...]格式。如果它们是另一种格式,则将它们声明为适当的类型(INT,FLOAT,STRING等),并使用UDF将它们转换为时间戳。

点击以下链接:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-Timestamps

答案 1 :(得分:0)

您必须使用登台表。在临时表中加载为String,在最终表中使用UDF,如下所示将UDF将字符串值转换为Timestamp

from_unixtime(unix_timestamp(列名,'dd-MM-yyyy HH:mm'))