Pular para o conteúdo principal

Configurar intervalos de acionamento da transmissão estruturada

Esta página explica como configurar intervalos de acionamento 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.

importante

A Databricks recomenda que você defina um modo de gatilho que equilibre latência e custo para o seu caso de uso. Caso contrário, você poderá se deparar com custos inesperados de armazenamento por parte do seu provedor cloud . Consulte a seção Controle de custos de armazenamento cloud para obter detalhes.

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.

:::nota computesem servidor

Em compute serverless , apenas Trigger.AvailableNow() e Trigger.Once() são suportados. Databricks recomenda Trigger.AvailableNow().

Para transmissão contínua em compute serverless , use o modo de pipeline acionado em vez do modo pipeline contínuo no modo contínuo.

Veja limitações de transmissão.

:::

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 superiores, 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

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.

Controle os custos de armazenamento cloud

Por default, se você não definir um modo de disparo, transmissão estruturada define o modo de disparo para processingTime e o intervalo para 0, que verifica novos dados a cada poucos milissegundos. Isso pode gerar um alto volume de chamadas API de armazenamento cloud por dia e resultar em cobranças inesperadas do seu provedor cloud .

A Databricks recomenda que você configure um modo de gatilho adequado aos seus requisitos de latência e custo. Consulte processingTime para obter informações sobre como configurar um intervalo de acionamento baseado em tempo.

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.