Freigeben über


Verwenden von Schedulerpools für mehrere Streamingworkloads

Damit mehrere Streamingabfragen Aufträge gleichzeitig auf einem gemeinsam genutzten Cluster ausführen können, können Sie Abfragen so konfigurieren, dass sie in separaten Schedulerpools ausgeführt werden.

Wie funktionieren Schedulerpools?

Standardmäßig werden alle in einem Notebook gestarteten Abfragen im gleichen Fair-Planungspool ausgeführt. Aufträge, die durch Trigger von allen Streamingabfragen in einem Notebook generiert werden, werden nacheinander in FIFO-Reihenfolge (First In, First Out) ausgeführt. Dies kann zu unnötigen Verzögerungen bei den Abfragen führen, da die Clusterressourcen nicht effizient gemeinsam genutzt werden.

Mit Scheduler-Pools können Sie deklarieren, welche strukturierten Streaming-Abfragen Computeressourcen gemeinsam nutzen.

Das folgende Beispiel weist query1 einem dedizierten Pool zu, während query2 und query3 sich einen Schedulerpool teilen.

# 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)

Hinweis

Die Konfiguration der lokalen Eigenschaft muss sich in derselben Notebookzelle befinden, in der Sie die Streamingabfrage starten.

Weitere Informationen finden Sie in der Dokumentation zu Apache Fair Scheduler.