维护任务的注意事项和限制
Amazon S3 提供维护操作,以提高 S3 表或表存储桶的性能。这些选项为文件压缩、快照管理和未引用文件移除。以下是这些管理选项的限制和注意事项。
压缩注意事项
以下注意事项适用于压缩。有关压缩的更多信息,请参阅 表维护。
-
仅 Apache Parquet、Avro 和 ORC 文件类型支持压缩。
-
默认情况下,压缩以 Apache Parquet 格式写入新文件。要改为将文件压缩为 Avro 或 ORC 格式,请将
write.format.default
表属性设置为avro
或orc
。 -
压缩不支持数据类型:
Fixed
。 -
压缩不支持压缩类型:
brotli
、lz4
。 压缩按照自动时间表进行。如果您想要防止与压缩关联的费用,则可以使用 PutTableMaintenanceConfiguration API 操作手动为表禁用压缩功能。
注意
Apache Iceberg 使用乐观并发模型以及冲突检测来仲裁写入事务。使用乐观并发,用户和压缩事务可能会发生冲突,而导致事务失败。如果发生冲突,压缩任务将在失败时重试。建议您的管道也使用重试逻辑来解决因操作冲突而失败的事务。
快照管理注意事项
以下注意事项适用于快照管理。有关快照管理的更多信息,请参阅 表维护。
-
只有在同时满足以下两个条件时,才会保留快照:要保留的最小快照数量和指定的保留期。
-
快照管理从 Apache Iceberg 中删除到期的快照元数据,从而防止对到期快照进行时空旅行查询,并选择性删除关联的数据文件。
-
快照管理不支持您在
metadata.json
文件中或通过ALTER TABLE SET TBLPROPERTIES
SQL 命令配置为 Iceberg 表属性的保留值,包括基于分支或标签的保留。当您配置基于分支或标签的保留策略,或者在metadata.json
文件上配置的保留策略长度超过通过PutTableMaintenanceConfiguration
API 配置的值时,快照管理将被禁用。在这些情况下,S3 不会使快照到期或移除快照,您需要手动删除快照或从 Iceberg 表中移除属性,以避免产生存储费用。
未引用文件移除的注意事项
以下注意事项适用于未引用文件移除。有关未引用文件移除的更多信息,请参阅 表存储桶的维护。
-
未引用文件移除会删除 Iceberg 元数据不再引用的数据和元数据文件(如果其创建时间早于保留期)。
S3 表和表存储桶维护操作限制和相关 API
维护操作 | 属性 | 是否可在表存储桶级进行配置? | 是否可在表级进行配置? | 默认值 | 最小值 | 相关的 Iceberg 维护例程 | 控制 S3 表类数据存储服务 API |
---|---|---|---|---|---|---|---|
压缩 | targetFileSizeMB |
否 | 是 | 512 MB | 64MB |
|
PutTableMaintenanceConfiguration |
快照管理 | minimumSnapshots |
否 | 是 | 1 | 1 | ExpireSnapshots retainLast |
PutTableMaintenanceConfiguration |
快照管理 | maximumSnapshotAge |
否 | 是 | 120 小时 | 1 小时 | ExpireSnapshots expireOlderThan |
PutTableMaintenanceConfiguration |
未引用文件移除 | unreferencedDays |
是 | 否 | 3 天 | 1 天 | deleteOrphanFiles |
PutTableBucketMaintenanceConfiguration |
未引用文件移除 | nonCurrentDays |
是 | 否 | 10 天 | 1 天 | 不适用 | PutTableBucketMaintenanceConfiguration |
注意
S3 表类数据存储服务应用的 parquets row-group-default 为 128 MB。