启用压缩优化器 - AWS Glue

启用压缩优化器

您可以在 AWS Glue Data Catalog 中使用 AWS Glue 控制台、AWS CLI 或 AWS API 为 Apache Iceberg 表启用压缩。对于新表,您可以在创建表时选择 Apache Iceberg 表格式并启用压缩。新表会默认禁用压缩。

Console
启用压缩
  1. 打开 AWS Glue 控制台(https://console.aws.amazon.com/glue/),然后以数据湖管理员、表创建者或已被授予表的 glue:UpdateTablelakeformation:GetDataAccess 权限的用户身份登录。

  2. 在导航窗格的数据目录下,请选择

  3. 页面上,选择要为其启用压缩的开放表格式的表,然后在操作菜单下,选择优化,然后选择启用

    您还可以通过选择表详细信息页面中的表优化来启用压缩。选择页面下半部的表优化选项卡,然后选择启用压缩

    在 Data Catalog 中创建新的 Iceberg 表时,也可以使用启用优化选项。

  4. 启用优化页面上,选择优化选项下的压缩

    同时选中“Apache Iceberg 表详细信息”页面和“启用压缩”选项。
  5. 然后从下拉列表中选择一个具有 表优化的先决条件 部分所示权限的 IAM 角色。

    还可以选择创建新 IAM 角色选项来创建一个具有运行压缩所需权限的自定义角色。

    按照以下步骤更新一个现有的 IAM 角色:

    1. 要更新 IAM 角色的权限策略,请在 IAM 控制台中转到用于运行压缩的 IAM 角色。

    2. 添加权限部分中,选择“创建策略”。在新打开的浏览器窗口中,创建将用于您的角色的新策略。

    3. 在“创建策略”页面上,选择 JSON 选项卡。将“先决条件”中显示的 JSON 代码复制到策略编辑器字段中。

  6. 如果您有安全策略配置,其中 Iceberg 表优化器需要从特定的虚拟私有云(VPC)访问 Amazon S3 存储桶,则请创建 AWS Glue 网络连接或使用现有网络连接。

    如果您尚未设置 AWS Glue VPC 连接,则请使用 AWS Glue 控制台或 AWS CLI/SDK 按照为连接器创建连接部分中的步骤创建一个新连接。

  7. 选择压缩策略。可用选项如下:

    • Binpack:Binpack 是 Apache Iceberg 中的默认压缩策略。该策略会将较小的数据文件合并为较大的数据文件,从而实现最佳性能。

    • 排序:排序是 Apache Iceberg 中的一种数据整理技术,根据指定列对文件中的信息进行聚类,从而通过减少需要处理的文件数量来显著提高查询性能。您可以使用排序字段定义 Iceberg 元数据中的排序顺序,并且在指定多个列时,数据将按照这些列在排序顺序中显示的顺序排序,从而确保将具有相似值的记录一起存储在文件中。排序压缩策略通过对分区内所有文件中的数据进行排序,实现进一步的优化。

    • Z 序:Z 形排序是按具有同等重要性的多列进行排序时的数据整理方式。在传统排序方式中,总有一列优先于其他列;而 Z 形排序对每列赋予均衡权重,有助于查询引擎减少在搜索数据时要读取的文件数。

      这种方法的原理是将来自不同列的值的二进制数编织在一起。例如,假设有来自两列的数字 3 和 4,首先用 Z 序编码将其转换为二进制(3 变为 011,4 变为 100),然后将这些数字交错,从而创建一个新值:011010。这种交错编织形成了一种模式,使相关数据在物理上相互紧挨。

      Z 形排序对多维查询尤其有效。例如,客户的表按收入、州和邮政编码进行 Z 形排序,在跨多个维度进行查询时的性能优于分层排序。该组织允许按特定的收入和地理位置组合进行查询,从而快速找到相关数据,同时尽可能减少不必要的文件扫描。

  8. 选择启用优化

AWS CLI

以下示例演示如何启用压缩。将账户 ID 替换为有效的 AWS 账户 ID。将数据库名称和表名称替换为实际的 Iceberg 表名称和数据库名称。将 roleArn 替换为 IAM 角色的 AWS 资源名称 (ARN) 以及具有运行压缩所需权限的 IAM 角色的名称。您可以将压缩策略 sort 替换为其他支持的策略,例如 z-orderbinpack

顺序取决于您的需求。

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 时间格式的时间戳。

状态

压缩运行的状态。值为成功或失败。

已压缩的文件数

已压缩的文件总数。

已压缩的字节数

已压缩的字节总数。