我有一个我希望导入Hive的数据文件,其中包含时间戳。时间戳的格式为MM / dd / yyyy HH:mm:ss。
我想创建一个包含时间戳类型的表来保存此值,但我无法弄清楚如何直接导入数据。
我的解决方法是将数据导入临时表,并将日期作为字符串,然后将此临时表中的数据读入我的永久表中,即时进行时间格式转换。
所以,我的整个两步加载函数看起来像这样:
create table tempTable(
timeField string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
--load data local here!
create table finalTable(
timeField timestamp
) stored as RCFILE;
insert into table finalTable select
from_unixtime( unix_timestamp(timeField,'MM/dd/yyyy HH:mm') )
from tempTable;
所以最后我的问题:-) 这是“正确”或“最好”的方式吗?我使用效率低下/愚蠢的解决方法吗?
谢谢!
答案 0 :(得分:0)
另一种解决方法是将数据文件的日期时间格式更改为yyyy / MM / dd HH:mm:ss
然后它会直接将数据作为timestamp数据类型转换为hive表。
希望得到这个帮助。
答案 1 :(得分:-1)
创建表temptable( 时域时间戳 )行格式删除字段由“,”;
终止这将把你的字符串04/05/2014 04:25:55作为hive上的时间戳。