Compartilhar via


Usar os pools do agendador para várias cargas de trabalho de streaming

Para habilitar várias consultas de streaming para executar trabalhos simultaneamente e compartilhar o cluster, você pode configurar as consultas a serem executadas em pools do agendador separados.

Como funcionam os pools de agendador?

Por padrão, todas as consultas iniciadas em um bloco de anotações são executadas no mesmo pool de agendamento justo. Os trabalhos gerados por gatilhos de todas as consultas de streaming em um notebook são executados um após o outro na ordem PEPS (primeiro a entrar, primeiro a sair). Isso pode causar atrasos desnecessários nas consultas, pois eles não compartilham com eficiência os recursos do cluster.

Os pools de agendador permitem declarar quais consultas de Streaming Estruturado compartilham recursos de computação.

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

# 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 do notebook em que você inicia a consulta de streaming.

Confira a documentação do Agendador justo do Apache para obter mais detalhes.