次の方法で共有


複数のストリーミング ワークロードにスケジューラ プールを使用する

複数のストリーミング クエリでジョブを同時に実行し、共有クラスターでジョブを同時実行するには、別々のスケジューラ プールで実行するクエリを構成できます。

スケジューラ プールのしくみは?

既定では、ノートブックで開始されたクエリはすべて、同じ公平なスケジュール プールで実行されます。 ノートブック内のすべてのストリーミング クエリからトリガーによって生成されたジョブは、先入れ先出し (FIFO) 順に順番に実行されます。 これにより、クラスター リソースを効率的に共有しないので、クエリで不要な遅延が発生する可能性があります。

スケジューラ プールを使用すると、コンピューティング リソースを共有する構造化ストリーミング クエリを宣言できます。

次の例では、query1 が専用プールに割り当てられ、query2query3 でスケジューラ プールが共有されます。

# Run streaming query1 in scheduler pool1
spark.sparkContext.setLocalProperty("spark.scheduler.pool", "pool1")
df.writeStream.queryName("query1").format("delta").start(path1)

# Run streaming query2 in scheduler pool2
spark.sparkContext.setLocalProperty("spark.scheduler.pool", "pool2")
df.writeStream.queryName("query2").format("delta").start(path2)

# Run streaming query3 in scheduler pool2
spark.sparkContext.setLocalProperty("spark.scheduler.pool", "pool2")
df.writeStream.queryName("query3").format("delta").start(path3)

注意

ローカル プロパティの構成は、ストリーミング クエリを開始するのと同じノートブック セル内になければなりません。

詳細については、Apache Fair Scheduler のドキュメントを参照してください。