启用压缩优化器
您可以在 AWS Glue Data Catalog 中使用 AWS Glue 控制台、AWS CLI 或 AWS API 为 Apache Iceberg 表启用压缩。对于新表,您可以在创建表时选择 Apache Iceberg 表格式并启用压缩。新表会默认禁用压缩。
- Console
-
启用压缩
-
打开 AWS Glue 控制台(https://console.aws.amazon.com/glue/),然后以数据湖管理员、表创建者或已被授予表的 glue:UpdateTable
和 lakeformation:GetDataAccess
权限的用户身份登录。
-
在导航窗格的数据目录下,请选择表。
在表页面上,选择要为其启用压缩的开放表格式的表,然后在操作菜单下,选择优化,然后选择启用。
您还可以通过选择表详细信息页面中的表优化来启用压缩。选择页面下半部的表优化选项卡,然后选择启用压缩。
在 Data Catalog 中创建新的 Iceberg 表时,也可以使用启用优化选项。
-
在启用优化页面上,选择优化选项下的压缩。
-
然后从下拉列表中选择一个具有 表优化的先决条件 部分所示权限的 IAM 角色。
还可以选择创建新 IAM 角色选项来创建一个具有运行压缩所需权限的自定义角色。
按照以下步骤更新一个现有的 IAM 角色:
-
要更新 IAM 角色的权限策略,请在 IAM 控制台中转到用于运行压缩的 IAM 角色。
-
在添加权限部分中,选择“创建策略”。在新打开的浏览器窗口中,创建将用于您的角色的新策略。
-
在“创建策略”页面上,选择 JSON
选项卡。将“先决条件”中显示的 JSON 代码复制到策略编辑器字段中。
-
如果您有安全策略配置,其中 Iceberg 表优化器需要从特定的虚拟私有云(VPC)访问 Amazon S3 存储桶,则请创建 AWS Glue 网络连接或使用现有网络连接。
如果您尚未设置 AWS Glue VPC 连接,则请使用 AWS Glue 控制台或 AWS CLI/SDK 按照为连接器创建连接部分中的步骤创建一个新连接。
-
选择压缩策略。可用选项如下:
Binpack:Binpack 是 Apache Iceberg 中的默认压缩策略。该策略会将较小的数据文件合并为较大的数据文件,从而实现最佳性能。
-
排序:排序是 Apache Iceberg 中的一种数据整理技术,根据指定列对文件中的信息进行聚类,从而通过减少需要处理的文件数量来显著提高查询性能。您可以使用排序字段定义 Iceberg 元数据中的排序顺序,并且在指定多个列时,数据将按照这些列在排序顺序中显示的顺序排序,从而确保将具有相似值的记录一起存储在文件中。排序压缩策略通过对分区内所有文件中的数据进行排序,实现进一步的优化。
Z 序:Z 形排序是按具有同等重要性的多列进行排序时的数据整理方式。在传统排序方式中,总有一列优先于其他列;而 Z 形排序对每列赋予均衡权重,有助于查询引擎减少在搜索数据时要读取的文件数。
这种方法的原理是将来自不同列的值的二进制数编织在一起。例如,假设有来自两列的数字 3 和 4,首先用 Z 序编码将其转换为二进制(3 变为 011,4 变为 100),然后将这些数字交错,从而创建一个新值:011010。这种交错编织形成了一种模式,使相关数据在物理上相互紧挨。
Z 形排序对多维查询尤其有效。例如,客户的表按收入、州和邮政编码进行 Z 形排序,在跨多个维度进行查询时的性能优于分层排序。该组织允许按特定的收入和地理位置组合进行查询,从而快速找到相关数据,同时尽可能减少不必要的文件扫描。
-
选择启用优化。
- AWS CLI
-
以下示例演示如何启用压缩。将账户 ID 替换为有效的 AWS 账户 ID。将数据库名称和表名称替换为实际的 Iceberg 表名称和数据库名称。将 roleArn
替换为 IAM 角色的 AWS 资源名称 (ARN) 以及具有运行压缩所需权限的 IAM 角色的名称。您可以将压缩策略 sort
替换为其他支持的策略,例如 z-order
或 binpack
。
顺序取决于您的需求。
aws glue create-table-optimizer \
--catalog-id 123456789012
\
--database-name iceberg_db
\
--table-name iceberg_table
\
--table-optimizer-configuration '{
"roleArn": "arn:aws:iam::123456789012:role/optimizer_role
",
"enabled": true,
"vpcConfiguration": {"glueConnectionName": "glue_connection_name"},
"compactionConfiguration": {
"icebergConfiguration": {"strategy": "sort
"}
}
}'\
--type compaction
- AWS API
-
调用 CreateTableOptimizer 操作为表启用压缩。
启用压缩后,表优化选项卡会在压缩运行完成后显示以下压缩详细信息:
- 开始时间
-
压缩进程在 Data Catalog 中启动的时间。该值是一个采用 UTC 时间格式的时间戳。
- 结束时间
-
数据目录中压缩进程结束的时间。该值是一个采用 UTC 时间格式的时间戳。
- 状态
-
压缩运行的状态。值为成功或失败。
- 已压缩的文件数
已压缩的文件总数。
- 已压缩的字节数
-
已压缩的字节总数。