【发布时间】:2019-08-07 13:41:12
【问题描述】:
我在 Athena 上使用此代码创建了一个具有自动分区功能的表。
CREATE EXTERNAL TABLE IF NOT EXISTS matchdata.stattable (
`matchResult` string,
...
) PARTITIONED BY (
year int ,
month int,
day int
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://******/data/year=2019/month=8/day=2/'
TBLPROPERTIES ('has_encrypted_data'='false');
我运行了 MSCK REPAIR TABLE stattable,但文件系统上缺少表,查询结果是返回零记录。 matchdata.stattable 得到相同的结果。
另一个没有分区的表,查询工作正常。但是随着服务的继续和数据集的增长,我必须进行分区。
示例数据路径为 data/2019/8/2/1SxFHaUeHfesLtPs._BjDk.gz。我该如何解决这个问题?
【问题讨论】:
-
我再次创建了一个位置为 's3://***/data/' 的表,但后来我得到了 分区不在 Metastore 中。我手动添加了一个分区并再次尝试,但使用 msck repair 自动分区不起作用。
标签: sql hive amazon-athena