Uso de grupos de programador para varias cargas de trabajo de streaming

Para permitir que varias consultas de streaming ejecuten trabajos simultáneamente en un clúster compartido, puede configurar las consultas para que se ejecuten en grupos de programadores independientes.

Nota:

No se pueden especificar grupos de subprocesos al trabajar con objetos de Unity Catalog.

¿Cómo funcionan los grupos de programadores?

De forma predeterminada, todas las consultas iniciadas en un cuaderno se ejecutan en el mismo grupo de programación imparcial. Los trabajos generados por desencadenadores de todas las consultas de streaming de un cuaderno se ejecutan uno tras otro en el orden FIFO (primero en entrar, primero en salir). Esto puede provocar retrasos innecesarios en las consultas, ya que no comparten eficazmente los recursos del clúster.

Los grupos de programadores permiten declarar qué consultas de Structured Streaming comparten recursos de proceso.

En el ejemplo siguiente se asigna query1 a un grupo dedicado, mientras que query2 y query3 comparten un grupo de programadores.

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

Nota:

La configuración de la propiedad local debe estar en la misma celda del cuaderno en que se inicia la consulta de streaming.

Para más información, consulte la documentación del programador justo de Apache.