メインコンテンツまでスキップ

多くの小さな Spark ジョブ

ジョブ タイムラインに、次々と実行される短いジョブが多数表示される場合、ワークロードは 10 GB 未満の小さなデータに対して多数の操作を実行している可能性があります。各操作にかかる時間はわずか数秒ですが、操作ごとの時間と固定オーバーヘッドが積み重なります。小規模なジョブを一度に1つずつ実行すると、クラスターの多くがアイドル状態になる可能性があり、使用していないコンピュートにも料金が発生します。

ジョブタイムラインでほとんどのジョブが小さく表示される場合は、このページを使用してください。タイムラインが別のパターンを示している場合は、そのパターンのページを参照してください。

操作を並行してラン​

小さなジョブを高速化する最善の方法は、複数の操作を並行して実行することです。次のいずれかのアプローチを使用します:

  • LakeFlow Pipelinesを使用します。 Databricks では LakeFlow Pipelines の使用をお勧めします。これは操作を自動的に並列で実行します。
  • マルチタスクジョブを使用します。 操作を複数のノートブックに分割し、 マルチタスク ジョブを使用して同じクラスターで並列に実行します。
  • SQLウェアハウスを使用します。 すべてのクエリーがSQLで記述されている場合は、SQLウェアハウスで実行します。SQLウェアハウスは、多数のクエリーを並列で実行できるように設計されています。
  • For each タスクを使用します。 ノートブックにパラメーターを設定し、For each タスクを使用して、それを並列に複数回ランします。 同時実行 を設定して、並列処理のレベルを制御します。このアプローチは Serverless コンピュートでうまく機能します。

コンピュートのサイズを適正化する​

操作を並列化できない場合、小さなデータに対する小さな操作は、多くのワーカーを使用してもメリットがありません。小さなクラスターまたは単一ノードコンピュートを使用するか、クラスターサイズを自分で管理する必要がないようにServerlessコンピュートでワークロードを実行します。