雅典娜的表未填充

时间:2020-10-01 12:05:39

标签: json amazon-web-services amazon-s3 amazon-athena

我正在尝试从S3存储桶中存在的JSON文件在Athena中创建表。 以下是查询-

CREATE EXTERNAL TABLE `sample_tablename` (
`sample_column1` string,
`sample_column2` integer
)
PARTITIONED BY ( 
`sample_column3` string)
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION
's3://bukcet_name/folder_name'
TBLPROPERTIES (
'classification'='json')

我的JSON文件看起来像-

[{"sample_column1": "abcd","sample_column2": "efgh"},{"sample_column1": "ijkl","sample_column2": "mnop"}]

该表与分区一起形成,但是该表为空。没有错误信息。可能出什么问题了?

2 个答案:

答案 0 :(得分:0)

我认为期望的格式是JSON记录的单独行,如下所示:

{"sample_column1": "abcd","sample_column2": "efgh"}
{"sample_column1": "ijkl","sample_column2": "mnop"}

请参阅:AWS Athena with simple JSON data – PRESTOCOMPUTE

答案 1 :(得分:0)

您需要在分区表上运行MSCK REPAIR TABLE

MSCK REPAIR TABLE命令扫描文件系统(例如Amazon S3)以查找在创建表后已添加到文件系统或从文件系统中删除的Hive兼容分区。该命令更新目录中有关分区以及与分区相关联的数据的元数据。

CREATE TABLE documentation

中也提到了这一点

创建具有分区的表后,运行包含MSCK REPAIR TABLE子句的后续查询以刷新分区元数据,例如MSCK REPAIR TABLE cloudfront_logs;。对于与Hive不兼容的分区,请使用ALTER TABLE ADD PARTITION加载分区,以便您可以查询数据。

然后,您很可能会遇到John所指的格式问题。