本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
資料表的維護
S3 Tables 提供維護操作,以增強個別資料表的管理和效能。預設會針對資料表儲存貯體中的所有資料表啟用下列選項。您可以透過指定 S3 資料表的維護組態檔案來編輯或停用這些檔案。
編輯此組態需要 s3tables:GetTableMaintenanceConfiguration
和 s3tables:PutTableMaintenanceConfiguration
許可。
壓縮
壓縮是在資料表層級設定,並將多個較小的物件合併為較少、較大的物件,以改善Apache Iceberg查詢效能。合併物件時,壓縮也會套用資料表中資料列層級刪除的效果。
預設會為所有資料表啟用壓縮,預設目標檔案大小為 512MB,或您指定的自訂值介於 64MB 到 512MB 之間。系統會將經壓縮的檔案寫入為資料表的最新快照。
壓縮策略
您可以選擇多個壓縮策略,根據您的查詢模式和資料表排序順序,進一步提高查詢效能。
S3 Tables 支援這些資料表的壓縮策略:
-
Auto (預設)
-
Amazon S3 會根據資料表排序順序選取最佳壓縮策略。這是所有資料表的預設壓縮策略。
-
對於中繼資料中具有定義排序順序的資料表,
auto
會自動套用sort
壓縮。 -
對於沒有排序順序的資料表,
auto
會預設為使用binpack
壓縮。
-
-
Binpack
-
將小型檔案合併為較大的檔案,通常以大小超過 100MB 為目標,同時套用任何待定的刪除。這是未排序資料表的預設壓縮策略。
-
-
排序
-
根據在壓縮期間依階層自動排序的指定資料欄組織資料,改善篩選操作的查詢效能。當您的查詢經常篩選特定資料欄時,建議使用此策略。當您使用此策略時,S3 Tables 會在資料表屬性中定義
sort_order
時,自動對資料欄套用階層排序。
-
-
Z 順序
-
透過將多個屬性混合到可用於排序的單一純量值來最佳化資料組織,從而實現跨多個維度的有效查詢。當您需要同時查詢多個維度的資料時,建議使用此策略。此策略要求您使用資料表屬性在 Iceberg
sort_order
資料表屬性中定義排序順序。
-
壓縮會產生額外費用。如需詳細資訊,請參閱 Amazon S3 定價
壓縮範例
下列範例顯示資料表壓縮的組態。
- 使用 設定壓縮目標檔案大小 AWS CLI
-
目標壓縮檔案大小下限為 64MB;上限為 512MB。
下列範例會使用
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}}}'如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration
。 - 使用 設定壓縮策略 AWS CLI
-
下列範例會將壓縮策略變更為
sort
使用PutTableMaintenanceConfiguration
API。設定壓縮時,您可以從下列壓縮策略中選擇: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"}}}'如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration
。 - 使用 停用壓縮 AWS 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}}}'如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration
。
快照管理
快照管理會決定資料表的作用中快照數量。這是以 MinimumSnapshots
(預設為 1) 和 MaximumSnapshotAge
(預設為 120 小時) 為基礎。快照管理會根據這些組態將資料表快照過期並加以移除。
當快照過期時,Amazon S3 會將僅由該快照參考的任何物件標記為非最新物件。這些非最新物件會在未參考檔案移除政策中 NoncurrentDays
屬性指定的天數之後刪除。
注意
刪除非最新物件會永久性刪除這些物件,而且無法加以復原。
若要檢視或復原標示為非最新物件的物件,您必須聯絡 AWS 支援。如需聯絡的相關資訊 AWS 支援,請參閱聯絡 AWS
快照管理會決定要從資料表中刪除的物件,僅參考該資料表。從資料表外部參考這些物件並不會阻止快照管理刪除它們。
注意
快照管理不支援您在 metadata.json
檔案中或透過 ALTER TABLE SET TBLPROPERTIES
SQL 命令設定作為 Iceberg 資料表屬性的保留值,包括分支或標籤型保留。在設定分支或標籤型保留政策時,或在 metadata.json
檔案上設定的保留政策比透過 PutTableMaintenanceConfiguration
API 設定之值還長時,系統會停用快照管理。在這些情況下,S3 不會讓快照過期或加以移除,而且您將需要手動刪除快照,或從您的 Iceberg 資料表移除屬性,以避免產生儲存費用。
您只能在資料表層級設定快照管理。如需詳細資訊,請參閱 Amazon S3 定價
快照管理範例
下列範例顯示資料表快照管理的組態。
- 使用 設定快照管理 AWS 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}}}' - 使用 停用快照管理 AWS 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}}}'
如需詳細資訊,請參閱 AWS CLI 命令參考中的 put-table-maintenance-configuration
考量與限制
若要進一步了解壓縮和快照管理的其他考量和限制,請參閱維護任務的考量和限制。
注意
S3 Tables 會套用 128 MB 的 parquets row-group-default size。