优化 Iceberg 表
随着数据累积到 Iceberg 表中,由于打开文件所需的处理时间增加,查询效率逐渐降低。如果表包含删除文件
为了帮助优化 Iceberg 表的查询性能,Athena 支持手动压缩作为表维护命令。压缩可在不改变表内容的情况下优化表的结构布局。
REWRITE DATA 压缩操作
REWRITE DATA 压缩操作根据数据文件的大小和相关删除文件的数量将数据文件重写为更优化的布局。
语法
以下语法摘要显示了如何优化 Iceberg 表的数据布局。
OPTIMIZE [db_name.]table_nameREWRITE DATA USING BIN_PACK [WHEREpredicate]
目前,换行符分隔 DATA 和 USING 时,已知问题将导致此语句失败。若要解决该问题,请确保 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 表。其中包括用于历史记录和存储清理的快照过期
如果您运行快照过期操作,则无法对过期快照进行时间旅行操作。