変換のプッシュダウンの概要

結合変換を BigQuery に push することで、ELT ワークロードを効率的に設計して実行できます。変換のプッシュダウンを有効にすると、Cloud Data Fusion は Apache Spark ではなく BigQuery で JOIN オペレーションを実行します。その他の変換はすべて Spark を使用して実行されます。複数の複雑な結合を実行するパイプラインの場合、BigQuery で結合オペレーションを Spark よりも高速に実行できます。

制限事項

  • 変換のプッシュダウンは、Cloud Data Fusion バージョン 6.5.0 以降で使用できます。

  • Cloud Data Fusion でデータをプレビューすると、結合を含むすべての変換が BigQuery ではなく Spark で実行されます。

  • Cloud Data Fusion は、JOIN オペレーションのプッシュダウンのみをサポートします。

  • 1 つ以上の入力をメモリに読み込むように構成された結合は、BigQuery ではなく Spark で実行されます。

変革のプッシュ通知を使用するタイミング

BigQuery で JOIN オペレーションを実行するには、結合の実行が完了した後に、BigQuery にレコードを書き込み、BigQuery からレコードを読み取るプロセスが必要です。データセットのサイズによっては、ネットワーク オーバーヘッドが大幅に増加し、変換プッシュダウンが有効な場合、パイプライン全体の実行時間に悪影響を与える可能性があります。

このネットワークのオーバーヘッドがあるため、変換のプッシュダウンは、複数の JOIN オペレーションを順番に実行するパイプライン(結合ステージの間にステップがない)に最適です。このパイプライン構造には、Spark の結合に対する BigQuery の結合実行速度のメリットを活かして、BigQuery との間でレコードの push と pull を行う I/O コストを平均化できるという利点があります。

変革のプッシュダウンの仕組み

変換のプッシュダウンが有効なパイプラインを実行すると、Cloud Data Fusion は Spark を使用して各ステージを処理します(結合を実行するステージを除く)。

JOIN オペレーションの実行時:

  1. Cloud Data Fusion は、入力データセットを BigQuery に読み込みます(レコードを Cloud Storage に書き込んでから、BigQuery 読み込みジョブを実行します)。

  2. JOIN オペレーションは、SQL 結合ステートメントを使用して BigQuery ジョブとして実行されます。

  3. 結合オペレーションが実行されると、BigQuery からレコードがエクスポートされて、Spark でさらに処理されます。これを行うには、BigQuery エクスポート ジョブを実行し、Cloud Storage からレコードを読み取ります。

次の図は、Cloud Data Fusion で変換のプッシュダウンが有効になっているときに、Spark ではなく BigQuery に変換が push される方法を示しています。

Cloud Data Fusion での BigQuery 変換のプッシュダウン

おすすめの方法

クラスタとエグゼキュータのサイズを調整する

パイプライン構造が単純な変換と結合で構成されている場合、BigQuery でレコードの読み取りと書き込みを行う際に、パイプラインで追加の並列処理が役立つことがあります。

パイプラインでリソース管理を最適化するには:

  • ワークロードに「適切な」数のクラスタ ワーカー(ノード)を使用します。言い換えると、インスタンスで利用可能な CPU とメモリをすべて使用しながら、プロビジョニングされた Dataproc クラスタを最大限に活用し、大規模な JOIN オペレーションでは BigQuery の実行速度も向上します。

  • 自動スケーリング クラスタを使用して、パイプラインの並列処理を向上させます。

  • パイプラインの実行中に BigQuery からレコードを push または pull するステージで、リソース構成を調整します。

推奨: エグゼキュータのリソースの CPU コア数を増やしてみてください(ワーカーノードで使用する CPU コア数まで)。これにより、エグゼキュータは、データを BigQuery に書き込み、必要に応じてさらに処理するために BigQuery から読み取るために必要なシリアル化とシリアル化解除の手順において、CPU 使用率を最大化できます。詳細については、クラスタのサイズ設定をご覧ください。

JOIN オペレーションを BigQuery にプッシュダウンする利点は、パイプラインが小さな Dataproc クラスタ上で実行される可能性があることです。結合がパイプラインで最もリソース消費量の多いオペレーションになるようにパイプラインが構造化されている場合は、負荷の大きい JOIN オペレーションが BigQuery で実行されるため、クラスタサイズを小さくしてテストできます。これにより、全体的なコンピューティング費用を削減できます。

データセットのサイズを検討する

JOIN オペレーションのデータセットのサイズを考慮してください。多数の出力レコードを生成する JOIN オペレーション(クロス JOIN オペレーションに似ているものなど)の場合、生成されるデータセットのサイズは入力データセットより桁違いになる場合があります。また、パイプライン全体のパフォーマンスの観点から、これらのレコードに対して追加の Spark 処理(変換やシンクなど)が発生した場合に、これらのレコードを Spark に取り込むオーバーヘッドも検討してください。

次のステップ