Pular para o conteúdo principal

Configurar intervalos de acionamento da transmissão estruturada

Este artigo explica como configurar intervalos de disparo para transmissão estruturada no Databricks.

Apache Spark transmissão estruturada processa dados de forma incremental. Os intervalos de disparo controlam a frequência com que a transmissão estruturada verifica novos dados. Você pode configurar intervalos de acionamento para processamento em tempo real quase contínuo, para atualização agendada do banco de dados ou para processamento em lote de todos os novos dados por um dia ou uma semana.

O que é Auto Loader? A transmissão estruturada é usada para carregar dados; entender como os gatilhos funcionam oferece a maior flexibilidade para controlar custos e, ao mesmo tempo, ingerir dados com a frequência desejada.

Visão geral dos modos de disparo

A tabela a seguir resume os modos de disparo disponíveis na transmissão estruturada:

Modede disparo

Exemplo de sintaxe (Python)

Ideal para

Não especificado (padrão)

N/A

Transmissão de uso geral com latência de 3 a 5 segundos. Equivalente ao gatilho processingTime com intervalos de 0 ms. transmissão processamento execução continuamente enquanto novos dados chegam.

Tempo de processamento

.trigger(processingTime='10 seconds')

Equilibrar custos e desempenho. Reduz a sobrecarga, impedindo que o sistema verifique os dados com muita frequência.

Disponível agora

.trigger(availableNow=True)

Processamento programado de lotes incrementais. Processa o máximo de dados possível que estiverem disponíveis no momento em que a tarefa de transmissão é acionada.

Modo em tempo real

.trigger(realTime='5 minutes')

Cargas de trabalho operacionais de latência ultrabaixa que exigem processamento em menos de um segundo, como detecção de fraudes ou personalização em tempo real. Pré-visualização pública. '5 minutos' indica a duração de um microlote. Utilize 5 minutos para minimizar a sobrecarga por lote, como a compilação de consultas.

Contínuo

.trigger(continuous='1 second')

Não suportado. Este é um recurso experimental incluído no Spark OSS. Use o modo em tempo real.

processingTime: Intervalos de disparo baseados em tempo

A transmissão estructurada refere-se aos intervalos de acionamento baseados no tempo como “microlotes de intervalo fixo”. Usando a palavra-chave processingTime , especifique uma duração de tempo como uma string, como .trigger(processingTime='10 seconds').

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

AvailableNow: Processamento incremental de lotes

importante

No Databricks Runtime 11.3 LTS e versões posteriores, Trigger.Once está obsoleto. Use Trigger.AvailableNow para todas as cargas de trabalho de processamento de lotes incrementais.

A opção de gatilho AvailableNow consome todos os registros disponíveis como lotes incrementais com a capacidade de configurar o tamanho dos lotes com opções como maxBytesPerTrigger. As opções de dimensionamento variam de acordo com a fonte de dados.

Fonte de dados suportada

Databricks suporta o uso de Trigger.AvailableNow para processamento incremental de lotes de muitas fontes de transmissão estruturada. A tabela a seguir inclui a versão mínima compatível do site Databricks Runtime necessária para cada fonte de dados:

Origem

Versão mínima do Databricks Runtime

Fontes de arquivos (JSON, Parquet, etc.)

9.1 LOTES

Delta Lake

10.4 LTS

Carregador automático

10.4 LTS

Apache Kafka

10.4 LTS

Kinesis

13.1

Tempo real: cargas de trabalho operacionais de latência ultrabaixa

info

Visualização

Este recurso está em Pré-visualização Pública.

O modo tempo real para transmissão estruturada atinge uma latência de ponta a ponta inferior a 1 segundo na cauda e, em casos comuns, em torno de 300 ms. Para obter mais detalhes sobre como configurar e usar o modo tempo real de forma eficaz, consulte o modo tempo real em transmissão estruturada.

O Apache Spark possui um intervalo de disparo adicional conhecido como Processamento Contínuo. Este modo foi classificado como experimental desde o Spark 2.3. O Databricks não suporta nem recomenda este modo. Utilize o modo em tempo real para casos de uso que exigem baixa latência.

nota

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

Alterar intervalos de disparo entre execuções

O senhor pode alterar o intervalo de disparo entre as execuções enquanto usa o mesmo ponto de verificação.

Comportamento ao alterar intervalos

Se uma transmissão estruturada for interrompida enquanto um microlote estiver sendo processado, esse microlote deverá ser concluído antes que o novo intervalo de acionamento seja aplicado. Como resultado, você poderá observar um processamento em micro-lotes com as configurações especificadas anteriormente após alterar o intervalo de disparo. A seguir, descrevemos o comportamento esperado durante a transição:

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

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

Recuperação de falhas em consultas

nota

Se você estiver tentando se recuperar de uma falha de consulta associada a lotes incrementais, alterar o intervalo de acionamento não resolve o problema, pois os lotes ainda precisam ser concluídos. Aumentar a capacidade compute usada para processar os lotes, a fim de tentar resolver o problema. Em casos raros, pode ser necessário reiniciar a transmissão com um novo ponto de verificação.