最佳化 Iceberg 資料表 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

最佳化 Iceberg 資料表

Athena 提供多種最佳化功能,可改善 Apache Iceberg 資料表上的查詢效能。隨著資料累積,由於檔案處理開銷增加,以及套用儲存在 Iceberg 刪除檔案中的資料列層級刪除的運算成本增加,查詢效率可能會降低。為了解決這些挑戰,Athena 支援手動壓縮和清空運算子,以最佳化資料表結構。Athena 也使用 Iceberg 統計資料來啟用成本型查詢最佳化和 Parquet 資料欄索引,以便在查詢執行期間精確刪除資料。這些功能可共同運作,以減少查詢執行時間、將資料掃描降至最低,並降低成本。本主題說明如何使用這些最佳化功能來維護 Iceberg 資料表上的高效能查詢。

OPTIMIZE

OPTIMIZE table REWRITE DATA 壓縮動作會根據相關 delete 檔案的大小和數量,將資料檔案重寫成更好的版面配置。如需有關語法和資料表屬性的詳細資訊,則請參閱 OPTIMIZE

範例

下列範例將 delete 檔案合併到資料檔案中,並產生接近目標檔案大小的檔案,其中 category 的值是 c1

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUM 會執行快照過期孤立檔案移除。這些動作會減少中繼資料大小,並移除不在目前資料表狀態的檔案,這些檔案也早於為資料表指定的保留期間。如需有關語法的詳細資訊,則請參閱 VACUUM

範例

下列範例會使用資料表屬性來將資料表 iceberg_table 設定為保留最近三天的資料,然後使用 VACUUM 將舊快照集設為過期,並從資料表中移除孤立檔案。

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table

使用 Iceberg 資料表統計資料

Athena 的成本型最佳化工具使用 Iceberg 統計資料來產生最佳查詢計劃。為您的 Iceberg 資料表產生統計資料後,Athena 會自動使用此資訊來做出有關聯結排序、篩選條件和彙總行為的智慧型決策,通常可改善查詢效能並降低成本。

當您使用 S3 Tables 時,預設會開啟 Iceberg 統計資料。對於其他 Iceberg 資料表,Athena 會使用資料表屬性use_iceberg_statistics來判斷是否利用統計資料進行成本型最佳化。若要開始使用,請參閱AWS Glue 《 使用者指南》中的使用資料欄統計資料最佳化查詢效能,或使用 Athena 主控台在 Iceberg 資料表上產生隨需統計資料。

使用 Parquet 資料欄索引

Parquet 資料欄索引除了資料列群組層級統計資料之外,還利用頁面層級的最小/最大統計資料,讓 Athena 能夠在查詢執行期間執行更精確的資料刪除。這可讓 Athena 略過資料列群組中不必要的頁面,大幅減少掃描的資料量並改善查詢效能。它最適合對排序資料欄使用選擇性篩選條件述詞的查詢,改善執行時間和資料掃描效率,同時減少 Athena 從 Amazon S3 讀取所需的資料量。

如果基礎 Parquet 檔案中存在資料欄索引,則 Athena 預設會將 Parquet 資料欄索引與 S3 Tables 搭配使用。對於其他 Iceberg 資料表,Athena 會使用 use_iceberg_parquet_column_index 屬性來決定是否使用 Parquet 檔案中的資料欄索引。使用 AWS Glue 主控台或 UpdateTable API 設定此資料表屬性。