表维护 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

表维护

S3 表类数据存储服务提供维护操作,以增强各个表的管理和性能。默认情况下为表存储桶中的所有表启用以下选项。可以通过为 S3 表指定维护配置文件来编辑或禁用这些选项。

编辑此配置需要 s3tables:GetTableMaintenanceConfigurations3tables:PutTableMaintenanceConfiguration 权限。

压缩

压缩是在表级别配置的,可将多个较小的对象组合成更少、更大的对象,以提高 Apache Iceberg 查询性能。当组合对象时,压缩还会应用表中行级删除的效果。

默认情况下,对所有表启用压缩功能,默认目标文件大小为 512 MB,或者您指定的自定义值介于 64 MB 到 512 MB 之间。压缩后的文件将作为表的最新快照写入。

压缩策略

您可以从多种压缩策略中进行选择,这些策略可以进一步提高查询性能,具体取决于查询模式和表排序顺序。

S3 表类数据存储服务现在对于表支持以下压缩策略:

  • Auto(默认)

    • Amazon S3 根据表排序顺序选择最佳压缩策略。这是适用于所有表的默认压缩策略。

    • 对于在元数据中具有已定义的排序顺序的表,auto 将自动应用 sort 压缩。

    • 对于没有排序顺序的表,auto 将默认为使用 binpack 压缩。

  • Binpack

    • 将小文件组合成较大的文件(目标大小通常超过 100 MB),同时应用任何待执行的删除。这是适用于未排序表的默认压缩策略。

  • 排序

    • 在压缩期间根据指定的列整理数据,这些列自动按层次结构排序,从而提高筛选出的操作的查询性能。当查询经常会筛选特定列时,建议使用此策略。当您使用此策略时,如果在表属性中定义了 sort_order,S3 表类数据存储服务会自动对列应用分层排序。

  • Z-order

    • 通过将多个属性混合成一个可用于排序的标量值来优化数据的组织,从而实现跨多个维度高效查询。需要同时跨多个维度查询数据时,建议使用此策略。此策略要求您在 Iceberg 表属性中使用 sort_order 表属性定义排序顺序。

压缩将产生额外费用。有关更多信息,请参阅 Amazon S3 定价中的定价信息。

压缩示例

以下示例展示了表压缩的配置。

使用 Amazon CLI 配置压缩目标文件大小

最小目标压缩文件大小为 64 MB;最大值为 512 MB。

以下示例将使用 PutTableMaintenanceConfiguration API 将目标文件大小更改为 256 MB。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

有关更多信息,请参阅 Amazon CLI 命令参考 中的 put-table-maintenance-configuration

使用 Amazon CLI 配置压缩策略

以下示例使用 PutTableMaintenanceConfiguration API 将压缩策略更改为 sort。设置压缩时,您可以从以下压缩策略中进行选择:autobinpacksortz-order

注意

要将压缩策略设置为 sortz-order,需要满足以下先决条件:

  • 在 Iceberg 表属性中定义的排序顺序。

  • s3tables:GetTableData 权限。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'

有关更多信息,请参阅 Amazon CLI 命令参考 中的 put-table-maintenance-configuration

使用 Amazon CLI 禁用压缩

以下示例将使用 PutTableMaintenanceConfiguration API 禁用压缩。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

有关更多信息,请参阅 Amazon CLI 命令参考 中的 put-table-maintenance-configuration

快照管理

快照管理确定表的活动快照的数量。这基于 MinimumSnapshots(默认为 1)和 MaximumSnapshotAge(默认为 120 小时)。快照管理会根据这些配置使表快照到期和移除表快照。

快照到期后,Amazon S3 会将仅由该快照引用的任何对象标记为非当前对象。这些非当前对象将在由未引用文件移除策略中的 NoncurrentDays 属性指定的天数后被删除。

注意

删除非当前对象是永久性的,无法恢复这些对象。

要查看或恢复已标记为非当前对象的对象,必须联系 Amazon Web Services 支持。有关联系 Amazon Web Services 支持 的信息,请参阅联系 AmazonAmazon Web Services 支持 文档

快照管理根据仅对表的引用来确定要从该表中删除的对象。从表外部对这些对象进行的引用将不会阻止快照管理删除这些对象。

注意

快照管理不支持您在 metadata.json 文件中或通过 ALTER TABLE SET TBLPROPERTIES SQL 命令配置为 Iceberg 表属性的保留值,包括基于分支或标签的保留。当您配置基于分支或标签的保留策略,或者在 metadata.json 文件上配置的保留策略长度超过通过 PutTableMaintenanceConfiguration API 配置的值时,快照管理将被禁用。在这些情况下,S3 不会使快照到期或移除快照,您需要手动删除快照或从 Iceberg 表中移除属性,以避免产生存储费用。

只能在表级配置快照管理。有关更多信息,请参阅 Amazon S3 定价中的定价信息。

快照管理示例

以下示例展示了表快照管理的配置。

使用 Amazon CLI 配置快照管理

以下示例将使用 PutTableMaintenanceConfiguration API 将 MinimumSnapshots 设置为 10,并将 MaximumSnapshotAge 设置为 2500 小时。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}'
使用 Amazon CLI 禁用快照管理

以下示例将使用 PutTableMaintenanceConfiguration API 禁用快照管理。

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'

有关更多信息,请参阅 Amazon CLI 命令参考 中的 put-table-maintenance-configuration

注意事项和限制

要详细了解压缩和快照管理的其它注意事项和限制,请参阅维护任务的注意事项和限制

注意

S3 表类数据存储服务应用的 parquets row-group-default 为 128 MB。