從 JDBC 資料表中平行讀取 - AWS Glue

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

從 JDBC 資料表中平行讀取

您可以設定 JDBC 資料表的屬性,讓 AWS Glue 平行讀取資料。設定特定屬性時,您指示 AWS Glue 來對資料的邏輯分割區執行平行 SQL 查詢。您可以透過設定雜湊欄位或雜湊表達式來控制分割。您也可以控制平行讀取的數量,這些讀取會用來存取您的資料。

並行讀取 JDBC 資料表是一種可以提高性能的最佳化技術。如需有關識別此技術何時適用的程序的詳細資訊,請參閱《AWS 規定指南》中 AWS Glue for Apache Spark 任務效能調校最佳實務指引中的減少資料掃描數量

若要啟用平行讀取,您須在資料表結構的參數欄位中設定鍵值組。使用 JSON 符號來設定資料表的參數欄位值。關於編輯資料表屬性的詳細資訊,請參閱 檢視與編輯資料表的詳細資訊。您也可以在呼叫 ETL (擷取、轉換和載入) 方法 create_dynamic_frame_from_optionscreate_dynamic_frame_from_catalog 時啟用平行讀取。如需如何在這些方法中指定選項的詳細資訊,請參閱 from_optionsfrom_catalog

您可以對 JDBC 資料表 (也就是基礎資料為 JDBC 資料存放區的多數資料表) 使用此方法。讀取 Amazon Redshift 和 Amazon S3 資料表時,會略過這些屬性。

hashfield

hashfield 設為 JDBC 資料表中的欄位名稱,該 JDBC 資料表將用來將資料分配至分割區中。為獲得最佳結果,此欄位應擁有平均的分散值來將資料分散在分割區中。此欄位可以是任何資料類型。AWS Glue 會產生無重疊的查詢,這些查詢會平行執行,以讀取此欄位所分割的資料。例如,如果您的資料依月份平均分散,您可以使用 month 欄位來平行讀取每個月的資料:

'hashfield': 'month'

AWS Glue 建立查詢來將欄位值湊雜為分割區編號, 並針對所有分割區平行執行查詢。若要使用您自己的查詢來分割資料表讀取, 請提供 hashexpression 而非 hashfield

hashexpression

hashexpression 設定為 SQL 表達式 (符合 JDBC 資料庫引擎文法),此表達式會傳回一個整數。簡單表達式是資料表中任何數值欄位的名稱。AWS Glue 會產生 SQL 查詢來使用 hashexpression 子句中的 WHERE 來平行讀取 JDBC 資料以分割資料。

例如,使用數值欄位 customerID 來讀取依客戶編號分割的資料:

'hashexpression': 'customerID'

若要讓 AWS Glue 控制分割,請提供 hashfield 而非 hashexpression

hashpartitions

hashpartitions 設定為 JDBC 資料表的平行讀取數。如果未設定該屬性,預設值為 7。

例如,將平行讀取數設定為 5,讓 AWS Glue 使用五個 (或更少) 查詢來讀取資料:

'hashpartitions': '5'