Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo explica como configurar intervalos de trigger para Structured Streaming no Azure Databricks.
O Apache Spark Structured Streaming processa os dados de forma incremental. Os intervalos de gatilho controlam com que frequência o Structured Streaming verifica novos dados. Pode configurar intervalos de gatilho para processamento quase em tempo real, para atualizações agendadas da base de dados ou processamento em lote de todos os dados novos durante um dia ou uma semana.
Porque What is Auto Loader? utiliza Structured Streaming para carregar dados; compreender como funcionam os gatilhos dá-lhe a maior flexibilidade para controlar custos enquanto ingere dados com a frequência desejada.
Visão geral dos modos de gatilho
A tabela seguinte resume os modos de disparo disponíveis no Streaming Estruturado:
| Modo de Disparo | Exemplo de Sintaxe (Python) | Melhor Para |
|---|---|---|
| Não especificado (Padrão) | N/A | Streaming de uso geral com latência de 3-5 segundos. Equivalente a um desencadeador processingTime com intervalos de zero milissegundos. O processamento em fluxo corre continuamente desde que novos dados cheguem. |
| Tempo de processamento | .trigger(processingTime='10 seconds') |
Equilibrar custo e desempenho. Reduz a sobrecarga ao impedir que o sistema verifique dados com demasiada frequência. |
| Disponível agora | .trigger(availableNow=True) |
Processamento incremental programado por lotes. Processa tantos dados quanto estiver disponível no momento em que o trabalho de streaming é acionado. |
| Modo em tempo real | .trigger(realTime='5 minutes') |
Cargas de trabalho operacionais de latência ultra-baixa que exigem processamento em menos de segundos, como deteção de fraude ou personalização em tempo real. Pré-visualização pública. '5 minutos' indica a duração de um micro-lote. Use 5 minutos para minimizar a sobrecarga por lote, como a compilação de consultas. |
| Contínuo | .trigger(continuous='1 second') |
Não suportado. Esta é uma funcionalidade experimental incluída no Spark OSS. Use o modo em tempo real em vez disso. |
Tempo de processamento: Intervalos de disparo baseados no tempo
O Structured Streaming refere-se aos intervalos de disparo baseados no tempo como "micro-batches de intervalo fixo". Usando a processingTime palavra-chave, especifique uma duração de tempo como uma cadeia de caracteres, como .trigger(processingTime='10 seconds').
A configuração deste intervalo determina com que frequência o sistema realiza verificações para verificar se chegaram novos dados. Configure o tempo de processamento para equilibrar os requisitos de latência e a taxa de chegada dos dados na origem.
AvailableNow: Processamento incremental em lote
Importante
No Databricks Runtime 11.3 LTS e posteriores, Trigger.Once foi descontinuado. Use Trigger.AvailableNow para todas as cargas de trabalho de processamento em lote incremental.
A opção de gatilho AvailableNow consome todos os registos disponíveis como um lote incremental, com a possibilidade de configurar o tamanho do lote através de opções como maxBytesPerTrigger. As opções de tamanho variam consoante a fonte de dados.
Fontes de dados suportadas
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 |
| Lago Delta | 10,4 LTS |
| Carregador Automático | 10,4 LTS |
| Apache Kafka | 10,4 LTS |
| Cinesis | 13,1 |
Tempo real: Cargas de trabalho operacionais de latência ultra-baixa
O modo em tempo real para streaming estruturado atinge uma latência total inferior a 1 segundo na parte final, e em casos comuns em torno de 300 ms. Para mais detalhes sobre como configurar e utilizar eficazmente o modo em tempo real, consulte Modo em tempo real em Streaming Estruturado.
O Apache Spark tem um intervalo de disparo adicional conhecido como Processamento Contínuo. Este modo tem sido classificado como experimental desde o Spark 2.3. O Azure Databricks não suporta nem recomenda este modo. Use o modo em tempo real para casos de uso de baixa latência.
Nota
O modo de processamento contínuo nesta página não está relacionado com o processamento contínuo nos Lakeflow Spark Declarative Pipelines.
Alterar intervalos de gatilho entre execuções
Você pode alterar o intervalo de ativação entre as execuções usando o mesmo ponto de verificação.
Comportamento ao mudar de intervalos
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 resultado, pode observar um processamento em micro-lotes com as definições previamente especificadas após alterar o intervalo de ativação. O seguinte descreve o comportamento esperado durante a transição:
Transição de intervalo baseado no tempo para
AvailableNow: Um micro-batch pode processar antes de processar todos os registos disponíveis como um batch incremental.Transição do
AvailableNowpara intervalo temporal: O processamento pode continuar para todos os registos que estavam disponíveis quando a últimaAvailableNowtarefa foi ativada. Este é um comportamento esperado.
Recuperação a partir de falhas de consulta
Nota
Se está a tentar recuperar de uma falha de consulta associada a um batch incremental, alterar o intervalo de trigger não resolve este problema porque o batch ainda tem de ser concluído. Aumente a capacidade de processamento 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.