如何使用 athena 表正确配置时间戳格式列

问题描述 投票:0回答:1

这是我正在 Athena 中处理的盗版表配置。数据以 json gzip 文件形式存储在存储桶中。 该列是时间戳,格式为

yyyyMMddTHH:mm:ss

CREATE external TABLE json_tab(
  `timestamp`            timestamp
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
    'ignore.malformed.json' = 'true'
)
LOCATION 's3://bucket/'
TBLPROPERTIES (
    'json.max.read.errors' = '100',
    'compression.type' = 'GZIP' ,
    'timestamp.formats' = 'yyyyMMdd\'T\'HH:mm:ss,yyyyMMdd\'T\'HH:mm:ss.SSS,yyyyMMdd HH:mm:ss'
);

查询表格,我得到

HIVE_BAD_DATA: Error Parsing a column in the table: Cannot create timestamp, parsing error
。 如果我将列设置为字符串,然后使用
parse_datetime("timestamp",'yyyyMMdd''T''HH:mm:ss')
选择它就可以了。但这意味着我正在转换选择,这会消耗更多的资源和时间。

尝试了不同的表配置,但没有成功。

json amazon-s3 amazon-athena presto trino
1个回答
0
投票

解决方案是改为

ROW FORMAT SERDE "org.apache.hive.hcatalog.data.JsonSerDe"

© www.soinside.com 2019 - 2024. All rights reserved.