Partilhar via


Configurar intervalos de disparo de streaming estruturado

O Apache Spark Structured Streaming processa dados de forma incremental; controlar o intervalo de gatilho para processamento em lote permite que você use o Streaming 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 lote de todos os novos dados por um dia ou semana.

Como o Databricks Auto Loader usa Streaming Estruturado para carregar dados, entender como os gatilhos funcionam oferece a maior flexibilidade para controlar os custos enquanto ingere dados com a frequência desejada.

Especificando intervalos de gatilho baseados em tempo

No Streaming Estruturado, os intervalos de gatilho baseados no tempo são referidos como "microlotes de intervalo fixo". Usando a processingTime palavra-chave, especifique uma duração de tempo como uma cadeia de caracteres, como .trigger(processingTime='10 seconds').

Quando você especifica um trigger intervalo muito pequeno (menos de dezenas de segundos), o sistema pode executar verificações desnecessárias para ver se novos dados chegam. Configure o tempo de processamento para equilibrar os requisitos de latência e a taxa de chegada dos dados na origem.

Configurando o processamento incremental em lote

Importante

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

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

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

Origem Versão mínima do Databricks Runtime
Fontes de ficheiros (JSON, Parquet, etc.) 9,1 LTS
Delta Lake 10.4 LTS
Carregador Automático 10.4 LTS
Apache Kafka 10.4 LTS
Cinesis 13,1

Qual é o intervalo de gatilho padrão?

O Streaming Estruturado assume como padrão microlotes de intervalo fixo de 500ms. A Databricks recomenda que você sempre especifique um personalizado trigger para minimizar os custos associados à verificação da chegada de novos dados e ao processamento de lotes subdimensionados.

Ajustar intervalos de disparador entre execuções

Você pode alterar o intervalo de ativação entre as execuções usando o mesmo ponto de verificação.

Se um trabalho de Streaming Estruturado parar enquanto um microlote estiver sendo processado, esse microlote deverá ser concluído antes que o novo intervalo de gatilho se aplique. Como tal, após alterar o intervalo de disparo, pode observar um processamento de microlote com as configurações especificadas anteriormente.

Ao mudar de um intervalo baseado no tempo para o uso de AvailableNow, isso pode resultar em um processamento de microlotes antes do processamento de todos os registos disponíveis como um lote incremental.

Ao mudar de AvailableNow para um intervalo baseado em tempo, isto pode resultar na continuação do processamento de todos os registos que estavam disponíveis quando o último trabalho AvailableNow foi iniciado. Este é o comportamento esperado.

Nota

Se você estiver tentando se recuperar de uma falha de consulta associada a um lote incremental, alterar o intervalo de gatilho não resolve esse problema porque o lote ainda deve ser concluído. O Databricks recomenda aumentar 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.

O que é o modo de processamento contínuo?

O Apache Spark suporta um intervalo de gatilho adicional conhecido como Processamento Contínuo. Este modo tem sido classificado como experimental desde Spark 2.3; consulte sua equipe de conta do Azure Databricks para garantir que você entenda as compensações desse modelo de processamento.

Note que este modo de processamento contínuo não está de todo relacionado com o processamento contínuo tal como aplicado na DLT.