我在hbase
中有一张这样的表格:
tableExaple (timestamp, timestamp_string, someOtherStuff)
timestamp
的数据类型为timestamp
timestamp_string
具有数据类型string
并具有模式'yyyy-MM-dd HH:mm:ss.SSS'
现在,我想阅读timestamp_string
中的值,将其与hive-UDF unix_timestamp(string date, string pattern)
转换为timestamp
并将其保存在同一个表中timestamp
}。
我该怎么做?
像
一样INSERT INTO tableExaple (timestamp) SELECT unix_timestamp(timestamp_string, 'yyyy-MM-dd HH:mm:ss.SSS') FROM tableExaple;
不起作用。
答案 0 :(得分:0)
我不认为unix_timestamp
喜欢毫秒格式。由于timestamp_string
的类型为string
,因此您可以在'.'
上拆分并获取日期和时间。因此,如果您有2014-11-11 08:09:10.123
,split(timestamp_string, '\\.')
会给您[2014-11-11 08:09:10, 123]
。您现在可以通过[0]
和[1]
引用您的数组。
示例:强>
SELECT otherStuff
, timestamp
, unix_timestamp(split(timestamp_string, '\\.')[0], 'yyyy-MM-dd HH:mm:ss') new_time
FROM some_table
如果您想在new_time
列中包含毫秒数,只需从[1]
数组中获取split
索引(并除以1000)。