Use pools de programador para múltiplas cargas de trabalho de transmissão

Para permitir que múltiplas query transmitidas executem Job simultaneamente em clusters compartilhados, você pode configurar query para executar em pools de programadores separados.

Como funcionam as piscinas do programador?

Por default, toda query começa na execução de um Notebook no mesmo pool de programar justo. Jobs gerados por gatilhos de todas as query de transmissão em uma execução Notebook , um após o outro, na ordem FIFO (first in, first out). Isso pode causar atrasos desnecessários na query, pois não são compartilhados de forma eficiente os recursos clusters .

Os pools do programador permitem que você declare quais recursos compute de compartilhamento query estruturada de transmissão.

O exemplo a seguir atribui query1 a um pool dedicado, enquanto query2 e query3 compartilham um pool de programador.

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

Observação

A configuração da propriedade local deve estar na mesma célula Notebook onde você começa sua query de transmissão.

Consulte a documentação do programador justo do Apache para obter mais detalhes.