

# JDBC テーブルからの並列読み取り
<a name="run-jdbc-parallel-read-job"></a>

AWS Glue​ がデータを並列に読み込むように、JDBC テーブルのプロパティを設定できます。特定のプロパティを設定するときに、データの論理パーティションに対して、並列 SQL クエリを実行するように AWS Glue​ に指示します。ハッシュフィールド、またはハッシュ式を設定して、パーティション分割を制御できます。データにアクセスするために使用される、並列読み込みの数を制御することもできます。

JDBC テーブルからの並列読み取りは、パフォーマンスを向上させる最適化手法です。この手法が適切であることを特定するプロセスの詳細については、「AWS 規範的ガイダンス」の「Best practices for performance tuning AWS Glue for Apache Spark jobs」ガイドにある「[Reduce the amount of data scan](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**  
データをパーティションに分割するために使用する JDBC テーブルの列の名前を `hashfield`​ に設定します。最良の結果を得るために、この列の値は、パーティション間にデータを分散する、値の均等分散である必要があります。この列には任意のデータ型を使用できます。AWS Glue​ は、この列によってパーティション分割されたデータの並列読み込みを実行する、重複しないクエリを生成します。たとえば、データが毎月均等に分散される場合、`month`​ 列を使用して、各月のデータを並行して読み込むことができます。  

```
  'hashfield': 'month'
```
AWS Glue​ は、フィールド値をパーティション番号にハッシュするクエリを作成して、すべてのパーティションにクエリを並行して実行します。パーティションのテーブル読み込みに独自のクエリを使用するには、​`hashfield` の代わりに ​`hashexpression` を指定します。

**hashexpression**  
`hashexpression` を、すべての番号を返す SQL 式 (JDBC データベースエンジンの文法に準拠する) に設定します。単純式は、テーブル内の任意の数値列の名前です。AWS Glue​ は、パーティションデータの ​`WHERE` 句で、​`hashexpression` を使用して並行して JDBC データを読み込む SQL クエリを生成します。  
たとえば、数値列 `customerID`​ を使用して、パーティション分割されたデータを顧客番号を使用して読み込みます。  

```
  'hashexpression': 'customerID'
```
AWS Glue​ がパーティション分割を制御するようにするには、​`hashexpression` の代わりに `hashfield`​ を指定します。

**hashpartitions**  
JDBC テーブルの並列読み込みの数を `hashpartitions`​ に設定します。このプロパティが設定されていない場合、デフォルト値は、7 です。  
たとえば、並列読み込みの数に `5`​ を設定すると、AWS Glue​ は 5 (以下) のクエリを使用して、データを読み込みます。  

```
  'hashpartitions': '5'
```