JDBC テーブルからの並列読み取り - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

JDBC テーブルからの並列読み取り

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」を参照してください。

並列読み込みするに、テーブル構造のパラメータフィールドにキーと値のペアを設定できます。テーブルのパラメータフィールドに値を設定するには、JSON 表記を使用します。テーブルのプロパティを編集する詳しい方法については、「テーブルの詳細の表示と管理」を参照してください。ETL (抽出、変換、ロード) メソッド create_dynamic_frame_from_options​ および create_dynamic_frame_from_catalog​ を呼び出すときに、並列読み込みを有効にすることもできます。これらのメソッドのオプションの指定の詳細については、「from_options」および「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'