Pular para o conteúdo principal

Otimize consultas de transmissão sem estado

Esta página descreve os recursos de otimização disponíveis para consultas de transmissão sem estado no Databricks Runtime 18.0 e versões superiores.

Consultas de transmissão estructurada sem estado processam dados sem manter estado intermediário. Essas consultas não usam operadores com estado, como agregações de transmissão, dropDuplicates ou join de transmissão-transmissão. Exemplos incluem consultas que usam *joins* estáticos de transmissão, MERGE INTO com tabelas Delta Lake e outras operações que rastreiam apenas as linhas processadas da origem para o destino.

Execução de consultas adaptativa e embaralhamento otimizado automaticamente

Databricks oferece suporte à Execução de Consulta Adaptativa (AQE) e ao Embaralhamento Otimizado Automaticamente (AOS) para consultas de transmissão sem estado. Esses recursos ajudam a otimizar cargas de trabalho de transmissão que usam uniões de fluxo estático, MERGE INTO com tabelas do Delta Lake, e operações semelhantes.

Para habilitar o AQE para consultas de transmissão sem estado, defina a seguinte configuração como true. Isso está ativado por default:

ini
spark.sql.adaptive.streaming.stateless.enabled true

Para habilitar o AOS para consultas de transmissão sem estado, habilite o AQE e defina a seguinte configuração:

ini
spark.sql.shuffle.partitions auto

Alterar partições aleatórias durante a reinicialização da consulta

As consultas de transmissão sem estado permitem alterar o número de partições de embaralhamento ao reiniciar uma consulta. Isso permite ajustar o paralelismo para acomodar volumes de entrada variáveis.

Este recurso é especialmente útil para cenários de preenchimento retroativo histórico. Por exemplo, você pode processar dados históricos de preenchimento com maior paralelismo e, em seguida, reduzir o paralelismo para entrada em tempo real.

Para alterar o número de partições de embaralhamento, defina a seguinte configuração com o valor desejado e reinicie a consulta:

ini
spark.sql.shuffle.partitions <number>