使用任意时间戳格式将数据导入Hive

时间:2013-11-16 13:45:26

标签: hive

我有一个我希望导入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;

所以最后我的问题:-) 这是“正确”或“最好”的方式吗?我使用效率低下/愚蠢的解决方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

另一种解决方法是将数据文件的日期时间格式更改为yyyy / MM / dd HH:mm:ss

然后它会直接将数据作为timestamp数据类型转换为hive表。

希望得到这个帮助。

答案 1 :(得分:-1)

创建表temptable( 时域时间戳 )行格式删除字段由“,”;

终止

这将把你的字符串04/05/2014 04:25:55作为hive上的时间戳。