S3 表类数据存储服务维护
S3 表类数据存储服务提供维护操作,以增强表的管理和性能。默认情况下为所有表启用以下选项。可以通过为 S3 表指定维护配置文件来编辑或禁用这些选项。
编辑此配置需要 s3tables:GetTableMaintenanceConfiguration
和 s3tables:PutTableMaintenanceConfiguration
权限。
压缩
压缩可将较小的对象组合成更少、更大的对象,以提高 Iceberg 查询性能。组合对象时,压缩还会应用表中行级删除的效果。Amazon S3 根据最适合数据访问规律的目标文件大小或您指定的值来压缩表。压缩后的文件将作为表的最新快照写入。默认情况下,对所有表启用压缩功能,默认目标文件大小为 512 MB。
注意
仅 Apache Parquet 文件类型支持压缩。
只能在表级配置压缩。压缩将产生额外费用。有关更多信息,请参阅 Amazon S3 定价
- 使用 Amazon CLI 配置压缩目标文件大小
-
以下示例将使用
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 禁用压缩。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 命令参考 中的 put-table-maintenance-configuration
注意事项和限制
要详细了解压缩和快照管理的其它注意事项和限制,请参阅维护任务的注意事项和限制。