Compartilhar via


Configurar os intervalos de acionamento do "Structured Streaming"

Este artigo explica como configurar intervalos de gatilho para o Streaming Estruturado no Azure Databricks.

O Streaming Estruturado do Apache Spark processa dados incrementalmente. Intervalos de gatilho controlam a frequência com que o Streaming Estruturado verifica novos dados. Você pode configurar intervalos de gatilho para processamento quase em tempo real, para atualizações de banco de dados agendadas ou processamento em lote de todos os novos dados por um dia ou uma semana.

Como o Carregador Automático? usa o Streaming Estruturado para carregar dados, entender como os gatilhos funcionam oferece a maior flexibilidade para controlar os custos ao ingerir dados com a frequência desejada.

Visão geral dos modos de gatilho

A tabela a seguir resume os modos de gatilho disponíveis no Streaming Estruturado:

Modo de gatilho Exemplo de sintaxe (Python) Mais Adequado Para
Não especificado (padrão) N/A Streaming de uso geral com latência de 3 a 5 segundos. Equivalente ao gatilho processingTime com intervalos de 0 ms. O processamento de fluxo é executado continuamente desde que novos dados cheguem.
Tempo de processamento .trigger(processingTime='10 seconds') Balanceamento de custo e desempenho. Reduz a sobrecarga impedindo o sistema de verificar dados com muita frequência.
Disponível agora .trigger(availableNow=True) Processamento de lote incremental agendado. Processa o máximo de dados que estiver disponível no momento em que o trabalho de streaming é disparado.
Modo em tempo real .trigger(realTime='5 minutes') Cargas de trabalho operacionais de latência ultra-baixa que exigem processamento de sub-segundo, como detecção de fraude ou personalização em tempo real. Prévia Pública. '5 minutos' indica o comprimento de um microlote. Use 5 minutos para minimizar a sobrecarga em cada lote, como a compilação de consultas.
Contínuo .trigger(continuous='1 second') Sem suporte. Esse é um recurso experimental incluído no OSS do Spark. Em vez disso, use o modo em tempo real.

processingTime: intervalos de gatilho baseados em tempo

O Streaming Estruturado refere-se a intervalos de gatilho baseados em tempo como "microlotes de intervalo fixo". Usando a palavra-chave processingTime, especifique uma duração de tempo como uma cadeia de caracteres, como .trigger(processingTime='10 seconds').

A configuração desse intervalo determina com que frequência o sistema executa verificações para ver se novos dados chegaram. Configure o tempo de processamento para equilibrar os requisitos de latência e a taxa com a qual os dados chegam na origem.

AvailableNow: processamento incremental em lote

Importante

No Databricks Runtime 11.3 LTS e posterior, Trigger.Once é preterido. Use Trigger.AvailableNow para todas as cargas de trabalho de processamento em lotes incrementais.

A opção de gatilho AvailableNow consome todos os registros disponíveis como um lote incremental, permitindo configurar o tamanho do lote com opções como maxBytesPerTrigger. As opções de dimensionamento variam de acordo com a fonte de dados.

Fontes de dados com suporte

O Azure Databricks suporta o uso de Trigger.AvailableNow para processamento em lote incremental de várias fontes de Streaming Estruturado. A tabela a seguir inclui a versão mínima do Databricks Runtime com suporte necessária para cada fonte de dados:

Fonte Versão mínima do Databricks Runtime
Fontes de arquivos (JSON, Parquet etc.) 9.1 LTS
Lago Delta 10.4 LTS
Carregador Automático 10.4 LTS
Apache Kafka 10.4 LTS
Cinética 13.1

realTime: cargas de trabalho operacionais de latência ultra baixa

Importante

Esse recurso está em Visualização Pública.

O modo em tempo real para o Streaming Estruturado atinge latência de ponta a ponta abaixo de 1 segundo na parte final e, em casos comuns, cerca de 300 ms. Para obter mais detalhes sobre como configurar e usar efetivamente o modo em tempo real, consulte o modo em tempo real no Streaming Estruturado.

O Apache Spark tem um intervalo de gatilho adicional conhecido como Processamento Contínuo. Esse modo foi classificado como experimental desde o Spark 2.3. O Azure Databricks não dá suporte nem recomenda esse modo. Em vez disso, use o modo em tempo real para casos de uso de baixa latência.

Observação

O modo de processamento contínuo nesta página não está relacionado ao processamento contínuo no Lakeflow Spark Declarative Pipelines.

Alterar intervalos de gatilho entre execuções

Você pode alterar o intervalo de acionamento entre as execuções ao usar o mesmo ponto de verificação.

Comportamento ao alterar intervalos

Se um trabalho de Streaming Estruturado for interrompido enquanto um microlote estiver sendo processado, esse microlote precisará ser concluído antes que o novo intervalo de gatilho seja aplicado. Como resultado, depois de alterar o intervalo de disparo, você pode observar um processamento de microlote com as configurações especificadas anteriormente. O seguinte descreve o comportamento esperado ao fazer a transição:

  • Transição do intervalo baseado em tempo para AvailableNow: um microlote pode ser processado antes de todos os registros disponíveis serem processados como um lote incremental.

  • Transição de AvailableNow para um intervalo baseado em tempo: o processamento pode continuar de todos os registros que estavam disponíveis quando o último AvailableNow trabalho foi disparado. Este comportamento é esperado.

Recuperando-se de falhas de consulta

Observação

Se você estiver tentando se recuperar de uma falha de consulta associada a um lote incremental, alterar o intervalo de gatilho não resolverá esse problema porque o lote ainda deve ser concluído. Amplie a capacidade de computação usada para processar o lote para tentar resolver o problema. Em casos raros, talvez seja necessário reiniciar o fluxo com um novo ponto de verificação.