Amazon web services AWS雅典娜:删除日期范围之间的分区
我有一个雅典娜表,根据日期进行分区,如下所示:Amazon web services AWS雅典娜:删除日期范围之间的分区,amazon-web-services,amazon-athena,presto,Amazon Web Services,Amazon Athena,Presto,我有一个雅典娜表,根据日期进行分区,如下所示: 20190218 我想删除去年创建的所有分区 我尝试了下面的查询,但不起作用 ALTER TABLE tblname DROP PARTITION (partition1 < '20181231'); ALTER TABLE tblname DROP PARTITION (partition1 > '20181010'), Partition (partition1 < '20181231'); ALTER TABLE tb
20190218
我想删除去年创建的所有分区
我尝试了下面的查询,但不起作用
ALTER TABLE tblname DROP PARTITION (partition1 < '20181231');
ALTER TABLE tblname DROP PARTITION (partition1 > '20181010'), Partition (partition1 < '20181231');
ALTER TABLE tblname DROP PARTITION(partition1<'20181231');
ALTER TABLE tblname DROP PARTITION(分区1>'20181010')、PARTITION(分区1<'20181231');
根据,ALTER TABLE tblname DROP PARTITION
采用分区规范,因此不允许使用范围
在Presto中,您可以从tblname中执行删除操作,其中…
,但是雅典娜也不支持删除
出于这些原因,您需要利用一些外部解决方案
例如:
按中所示列出文件
删除文件和包含目录
更新分区信息(应该有帮助)
虽然Athena SQL此时可能不支持它,但Glue API调用GetPartitions
(Athena在引擎盖下用于查询)支持复杂的筛选表达式,类似于您可以在SQLWHERE
表达式中编写的表达式
除了通过Athena删除分区之外,您还可以使用Glue API来执行此操作。还需要注意的是,alter table drop partition
不会删除任何数据,只会删除分区元数据对象。删除文件是一项独立的操作,如果需要,可以按任何顺序执行。@Davos,我认为这对于外部表是正确的。我使用aws cli检索分区。然后,我使用bash脚本运行awscli命令,如果分区超过某个日期,则删除该分区。这是一个非常有趣的答案,感谢分享Theo!