

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

# 從 JDBC 資料表中平行讀取
<a name="run-jdbc-parallel-read-job"></a>

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

並行讀取 JDBC 資料表是一種可以提高性能的最佳化技術。如需識別此技術何時適當之程序的詳細資訊，請參閱 AWS 《 方案指南》中的 *Apache Spark AWS Glue 任務效能調校最佳實務*指南》中的[減少資料掃描量](https://docs.aws.amazon.com/prescriptive-guidance/latest/tuning-aws-glue-for-apache-spark/parallelize-tasks.html)。

若要啟用平行讀取，您須在資料表結構的參數欄位中設定鍵值組。使用 JSON 符號來設定資料表的參數欄位值。關於編輯資料表屬性的詳細資訊，請參閱 [檢視與管理資料表詳細資訊](tables-described.md#console-tables-details)。您也可以在呼叫 ETL (擷取、轉換和載入) 方法 `create_dynamic_frame_from_options` 和 `create_dynamic_frame_from_catalog` 時啟用平行讀取。如需如何在這些方法中指定選項的詳細資訊，請參閱 [from\_options](aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader.md#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_options) 和 [from\_catalog](aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader.md#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_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'
```