我们的Hive表如下所示:
CREATE TABLE IF not EXISTS xxxx
(
`Timestamp` Timestamp
)
ROW format serde 'org.apache.hive.hcatalog.data.JsonSerDe' WITH SERDEPROPERTIES ('timestamp.formats'="yyyy-MM-dd'T'HH:mm:ss.SS'Z',yyyy-MM-dd'T'HH:mm:ss.SSS'Z',yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'")
json数据如下:
{.....,"TimeStamp":"2016-01-26T13:50:00.422Z",....}
多亏了 SERDEPROPERTIES
以及 timestamp.formats
hive能够将这个json数据处理成时间戳格式。这很好,因为我们可以使用字符串timestamp,因为它是timestamp,所以我们可以使用timestamp的udf。
但我们也希望将这些数据反序列化为iso时间格式—返回到原始格式- "2016-01-26T13:50:00.422Z"
. 说到这里,我们需要做:
SELECT * FROM xxx
以iso格式获取时间:
2016-01-26T13:50:00.422Z
我们希望避免使用 someUDF(Timestamp)
在 HQL
b/c我们需要返回所有字段(使用asterix)。有可能做这样的事吗?
1条答案
按热度按时间z3yyvxxp1#
这会将epoch转换回iso格式,但会丢失一些分数秒的精度。希望有帮助。谢谢。