Configurar intervalos de gatilho do Fluxo Estruturado

O Fluxo Estruturado do Apache Spark processa dados incrementalmente. Controlar o intervalo de gatilho para processamento em lotes permite que você use o Fluxo Estruturado para cargas de trabalho, incluindo processamento quase em tempo real, atualização de bancos de dados a cada 5 minutos ou uma vez por hora ou processamento em lotes de todos os novos dados por um dia ou semana.

Como o Carregador Automático do Databricks usa o Fluxo 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.

Especificar intervalos de gatilho baseados em tempo

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

Quando você especifica um intervalo trigger muito pequeno (menos de dez segundos), o sistema pode executar verificações desnecessárias 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.

Configuração do processamento em lote incremental

Importante

No Databricks Runtime 11.3 LTS e superior, a configuração Trigger.Once foi preterida. O Databricks recomenda que você use Trigger.AvailableNow para todas as cargas de trabalho de processamento em lote incremental.

A opção de gatilho disponível agora consome todos os registros disponíveis como um lote incremental com a capacidade de configurar o tamanho do lote e opções como maxBytesPerTrigger (as opções de dimensionamento variam de acordo com a fonte de dados).

O Azure Databricks dá suporte ao uso de Trigger.AvailableNow para processamento em lote incremental de várias fontes de Fluxo 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
Delta Lake 10.4 LTS
Carregador Automático 10.4 LTS
Apache Kafka 10.4 LTS
Kinesis 13.1

Qual é o intervalo de gatilho padrão?

O Fluxo Estruturado é padronizado para micro-lotes de intervalo fixo de 500 ms. A Databricks recomenda que você sempre especifique um trigger personalizado para minimizar os custos associados à verificação se novos dados chegaram e ao processamento de lotes subdimensionados.

Como alterar intervalos de gatilho entre as execuções

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

Se um trabalho do Streaming Estruturado for interrompido enquanto um microlote estiver sendo processado, esse microlote precisará ser concluído para que o novo intervalo de gatilho seja aplicado. Dessa forma, talvez você observe um processamento de microlote com as configurações especificadas anteriormente depois de alterar o intervalo de gatilho.

Ao passar do intervalo baseado em tempo para o uso o AvailableNow, isso pode resultar em um processamento de microlote antes do processamento de todos os registros disponíveis como um lote incremental.

Ao passar de AvailableNow para um intervalo baseado em tempo, isso pode resultar na continuidade do processamento de todos os registros que estavam disponíveis quando o último trabalho AvailableNow foi disparado. Esse é o comportamento esperado.

Observação

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

O que é o modo de processamento contínuo?

O Apache Spark dá suporte a um intervalo de gatilho adicional conhecido como Processamento Contínuo. Esse modo foi classificado como experimental desde o Spark 2.3; confira sua equipe de conta do Azure Databricks para garantir que você entenda as compensações desse modelo de processamento.

Observe que esse modo de processamento contínuo não está relacionado ao processamento contínuo, conforme aplicado nas Tabelas Dinâmicas Delta.