我有一个firehose,它以默认目录结构“yy/mm/dd/hh”将数据存储在s3中,在athena中有一个表,其中这些列被定义为分区:
年:字符串,月:字符串,日:字符串,时:字符串
运行后
msck repair table clicks
我只收到:
Partitions not in metastore: clicks:2017/08/26/10
我可以手动添加这些分区,但一切正常,我想知道为什么msck repair不自动添加这些分区并更新metastore?
我有一个firehose,它以默认目录结构“yy/mm/dd/hh”将数据存储在s3中,在athena中有一个表,其中这些列被定义为分区:
年:字符串,月:字符串,日:字符串,时:字符串
运行后
msck repair table clicks
我只收到:
Partitions not in metastore: clicks:2017/08/26/10
我可以手动添加这些分区,但一切正常,我想知道为什么msck repair不自动添加这些分区并更新metastore?
2条答案
按热度按时间nqwrtyyt1#
为了将来的参考,除了本文提到的两个技巧之外:https://aws.amazon.com/premiumsupport/knowledge-center/athena-aws-glue-msck-repair-table/
允许glue:batchcreatepartition in iam政策
将s3路径更改为扁平箱
您还需要设置
TableType
属性设置为非空值。对我来说,是的EXTERNAL_TABLE
.ppcbkaq52#
使用雅典娜
MSCK REPAIR
对于s3,需要使用键值对作为路径前缀:点击次数/年=2017/月=08/天=26/小时=10/
代替:clicks/2017/08/26/10/
或者,直接在glue中更新分区(手动或使用爬虫)。
在这里找到这个:https://forums.aws.amazon.com/message.jspa?messageid=789078