优化 Iceberg 表 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

优化 Iceberg 表

随着数据累积到 Iceberg 表中,由于打开文件所需的处理时间增加,查询效率逐渐降低。如果表包含删除文件,则会产生额外的计算成本。在 Iceberg 中,删除文件存储行级删除,引擎必须将删除的行应用于查询结果。

为了帮助优化 Iceberg 表的查询性能,Athena 支持手动压缩作为表维护命令。压缩可在不改变表内容的情况下优化表的结构布局。

REWRITE DATA 压缩操作

REWRITE DATA 压缩操作根据数据文件的大小和相关删除文件的数量将数据文件重写为更优化的布局。

语法

以下语法摘要显示了如何优化 Iceberg 表的数据布局。

OPTIMIZE [db_name.]table_name REWRITE DATA USING BIN_PACK [WHERE predicate]
注意

目前,换行符分隔 DATAUSING 时,已知问题将导致此语句失败。若要解决该问题,请确保 DATA USING 在同一行。

压缩操作按重写过程中扫描的数据量收费。REWRITE DATA 操作使用谓词选择包含匹配行的文件。如果文件中的任何行与谓词匹配,则会选择该文件进行优化。因此,要控制受压缩操作影响的文件数量,可以指定 WHERE 子句。

配置压缩属性

要控制要选择以进行压缩的文件的大小以及压缩后生成的文件大小,可以使用表属性参数。您可以使用 ALTER TABLE SET PROPERTIES 命令配置相关的表属性

示例

以下示例将删除文件合并到数据文件中,然后生成接近目标文件大小的文件,其中 catalog 的值为 c1

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE catalog = 'c1'

其他 Iceberg 表优化

Iceberg 提供了其他可执行的操作,以进一步优化 Iceberg 表。其中包括用于历史记录和存储清理的快照过期删除孤立文件。若要执行这些任务,您可以使用 Amazon EMRGGlue ETL。若您希望 Athena 支持特定优化操作,请将反馈发送至 athena-feedback@amazon.com

警告

如果您运行快照过期操作,则无法对过期快照进行时间旅行操作。