aws雅典娜:删除日期范围之间的分区

e4eetjau  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(342)

我有一个雅典娜表,根据日期划分如下:

20190218

我想删除去年创建的所有分区。
我尝试了下面的查询,但没有成功。

ALTER TABLE tblname DROP PARTITION (partition1 < '20181231');

ALTER TABLE tblname DROP PARTITION (partition1 > '20181010'), Partition (partition1 < '20181231');
bhmjp9jg

bhmjp9jg1#

根据https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html, ALTER TABLE tblname DROP PARTITION 采用分区规范,因此不允许使用范围。
在普雷斯托你会做什么 DELETE FROM tblname WHERE ... ,但是 DELETE 雅典娜也不支持。
出于这些原因,您需要利用一些外部解决方案。
例如:
按中所示列出文件https://stackoverflow.com/a/48824373/65458
删除文件和包含目录
更新分区信息(https://docs.aws.amazon.com/athena/latest/ug/msck-repair-table.html 应该有帮助)

b1payxdu

b1payxdu2#

虽然AthenaSQL此时可能不支持它,但是glue api调用 GetPartitions (雅典娜在引擎盖下用于查询)支持复杂的过滤器表达式,类似于您可以在sql中编写的内容 WHERE 表情。
而不是删除分区通过雅典娜你可以这样做 GetPartitions 然后 BatchDeletePartition 使用胶水api。

相关问题