嗨我在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) - 我可以看到所有空值
任何人都可以帮助我吗
答案 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'))