Amazon Athena:如何一次删除所有分区

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

我的分区看起来像这样

event_year=2019/event_week=37/event_date=2019-09-10
event_year=2019/event_week=42/event_date=2019-10-13
event_year=2019/event_week=8/event_date=2019-02-20
event_year=2020/event_week=24/event_date=2020-06-15

像这样有1500个分区,如何一次性删除所有分区?

amazon-web-services presto amazon-athena
3个回答
6
投票

最简单、最快的方法是删除表并重新创建它。如果您没有 DDL,可以使用

SHOW CREATE TABLE table_name
获取它。

如果您确实需要删除分区而不是表,最有效的方法是使用 Glue 数据目录 API 首先列出所有分区,然后以 25 个为一组删除分区


2
投票

它没有在任何地方记录,但有时在 athena 中,您可以使用

删除所有分区

ALTER TABLE table_name DROP PARTITION (not_a_column=NULL)

如果您有一个在多个维度上分区的表,这似乎是只能指定一个分区的副作用。

如果上述方法不起作用,那么我会转而使用

awswrangler
python 库 https://aws-sdk-pandas.readthedocs.io/en/stable/stubs/awswrangler.catalog.delete_partitions.html


0
投票

对我来说这个选择

DROP PARTITION (not_a_column=NULL)

过去曾经工作过。我必须找到一种新的方法来做到这一点。我使用了以下查询:

SELECT * FROM my_db."my_table$partitions"

然后我使用一些代码来迭代结果并找到第一个分区的唯一值并构建以下sql:

ALTER TABLE my_db.my_table DROP
PARTITION (name='value1'),
PARTITION (name='value2'),
...

它适用于 int / string 类型,也适用于具有多个分区的表

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