我正在尝试从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"}]
该表与分区一起形成,但是该表为空。没有错误信息。可能出什么问题了?
答案 0 :(得分:0)
我认为期望的格式是JSON记录的单独行,如下所示:
{"sample_column1": "abcd","sample_column2": "efgh"}
{"sample_column1": "ijkl","sample_column2": "mnop"}
答案 1 :(得分:0)
您需要在分区表上运行MSCK REPAIR TABLE:
中也提到了这一点MSCK REPAIR TABLE命令扫描文件系统(例如Amazon S3)以查找在创建表后已添加到文件系统或从文件系统中删除的Hive兼容分区。该命令更新目录中有关分区以及与分区相关联的数据的元数据。
创建具有分区的表后,运行包含MSCK REPAIR TABLE子句的后续查询以刷新分区元数据,例如MSCK REPAIR TABLE cloudfront_logs;。对于与Hive不兼容的分区,请使用ALTER TABLE ADD PARTITION加载分区,以便您可以查询数据。
然后,您很可能会遇到John所指的格式问题。