表维护
S3 表类数据存储服务提供维护操作,以增强各个表的管理和性能。默认情况下为表存储桶中的所有表启用以下选项。可以通过为 S3 表指定维护配置文件来编辑或禁用这些选项。
编辑此配置需要 s3tables:GetTableMaintenanceConfiguration
和 s3tables: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 \ --namespacemynamespace
\ --nametesttable
\ --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'有关更多信息,请参阅 Amazon CLI 命令参考 中的 put-table-maintenance-configuration
。 - 使用 Amazon CLI 配置压缩策略
-
以下示例使用
PutTableMaintenanceConfiguration
API 将压缩策略更改为sort
。设置压缩时,您可以从以下压缩策略中进行选择:auto
、binpack
、sort
或z-order
注意
要将压缩策略设置为
sort
或z-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 \ --namespacemynamespace
\ --nametesttable
\ --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 \ --namespacemynamespace
\ --nametesttable
\ --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 支持 的信息,请参阅联系 Amazon
快照管理根据仅对表的引用来确定要从该表中删除的对象。从表外部对这些对象进行的引用将不会阻止快照管理删除这些对象。
注意
快照管理不支持您在 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 \ --namespacemy_namespace
\ --namemy_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 \ --namespacemy_namespace
\ --namemy_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。