Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página explica como configurar intervalos de gatilho para Streaming Estruturado em Azure Databricks.
O Streaming Estruturado do Apache Spark processa dados incrementalmente. Intervalos de gatilho controlam a frequência com que o Streaming Estruturado verifica novos dados. Você pode configurar intervalos de gatilho para processamento quase em tempo real, para atualizações de banco de dados agendadas ou processamento em lote de todos os novos dados por um dia ou uma semana.
Como o Carregador Automático? usa o Streaming 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.
Importante
Azure Databricks recomenda que você defina um modo de gatilho que balancee a latência e o custo do caso de uso. Caso contrário, você poderá ver custos de armazenamento inesperados do seu provedor de nuvem. Consulte o custo de armazenamento em nuvem do Control para obter detalhes.
Visão geral dos modos de gatilho
A tabela a seguir resume os modos de gatilho disponíveis no Streaming Estruturado:
| Modo de gatilho | Exemplo de sintaxe (Python) | Mais Adequado Para |
|---|---|---|
| Não especificado (padrão) | N/A | Streaming de uso geral com latência de 3 a 5 segundos. Equivalente ao gatilho processingTime com intervalos de 0 ms. O processamento de fluxo é executado continuamente desde que novos dados cheguem. |
| Tempo de processamento | .trigger(processingTime='10 seconds') |
Balanceamento de custo e desempenho. Reduz a sobrecarga impedindo o sistema de verificar dados com muita frequência. |
| Disponível agora | .trigger(availableNow=True) |
Processamento de lote incremental agendado. Processa o máximo de dados que estiver disponível no momento em que o trabalho de streaming é disparado. |
| Modo em tempo real | .trigger(realTime='5 minutes') |
Cargas de trabalho operacionais de latência ultra-baixa que exigem processamento de sub-segundo, como detecção de fraude ou personalização em tempo real. Prévia Pública. '5 minutos' indica o comprimento de um microlote. Use 5 minutos para minimizar a sobrecarga em cada lote, como a compilação de consultas. |
| Contínuo | .trigger(continuous='1 second') |
Sem suporte. Esse é um recurso experimental incluído no OSS do Spark. Em vez disso, use o modo em tempo real. |
:::note computação sem servidor
Na computação sem servidor, apenas Trigger.AvailableNow() e Trigger.Once() são suportados. O Databricks recomenda Trigger.AvailableNow().
Para streaming contínuo na computação sem servidor, use o modo de pipeline disparado versus contínuo no modo contínuo.
Consulte Limitações de streaming.
:::
processingTime: intervalos de gatilho baseados em tempo
O Streaming Estruturado refere-se a intervalos de gatilho baseados em tempo como "microlotes de intervalo fixo". Usando a palavra-chave processingTime, especifique uma duração de tempo como uma cadeia de caracteres, como .trigger(processingTime='10 seconds').
A configuração desse intervalo determina com que frequência o sistema executa verificações 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.
AvailableNow: processamento incremental em lote
Importante
No Databricks Runtime 11.3 LTS e superior, Trigger.Once é preterido. Use Trigger.AvailableNow para todas as cargas de trabalho de processamento em lotes incrementais.
A opção de gatilho AvailableNow consome todos os registros disponíveis como um lote incremental, permitindo configurar o tamanho do lote com opções como maxBytesPerTrigger. As opções de dimensionamento variam de acordo com a fonte de dados.
Fontes de dados com suporte
Azure Databricks dá suporte ao uso de Trigger.AvailableNow para processamento em lote incremental de várias fontes de streaming estruturadas. 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 |
| Lago Delta | 10.4 LTS |
| Carregador Automático | 10.4 LTS |
| Apache Kafka | 10.4 LTS |
| Cinética | 13.1 |
realTime: cargas de trabalho operacionais de latência ultra baixa
O modo em tempo real para o Streaming Estruturado atinge latência de ponta a ponta abaixo de 1 segundo na parte final e, em casos comuns, cerca de 300 ms. Para obter mais detalhes sobre como configurar e usar efetivamente o modo em tempo real, consulte o modo em tempo real no Streaming Estruturado.
O Apache Spark tem um intervalo de gatilho adicional conhecido como Processamento Contínuo. Esse modo foi classificado como experimental desde o Spark 2.3. Azure Databricks não dá suporte ou recomenda esse modo. Em vez disso, use o modo em tempo real para casos de uso de baixa latência.
Observação
O modo de processamento contínuo nesta página não está relacionado ao processamento contínuo no Lakeflow Spark Declarative Pipelines.
Controlar o custo de armazenamento em nuvem
Por padrão, se você não definir um modo de gatilho, o Streaming Estruturado definirá o modo de gatilho como processingTime e o intervalo como 0, verificando se há novos dados a cada poucos milissegundos. Isso pode gerar um alto volume de chamadas à API de armazenamento em nuvem por dia e resultar em encargos inesperados do seu provedor de nuvem.
O Databricks recomenda que você configure um modo de gatilho apropriado para seus requisitos de latência e custo. Consulte processingTime informações sobre como configurar um intervalo de gatilho baseado em tempo.
Alterar intervalos de gatilho entre execuções
Você pode alterar o intervalo de acionamento entre as execuções ao usar o mesmo ponto de verificação.
Comportamento ao alterar intervalos
Se um trabalho de Streaming Estruturado for interrompido enquanto um microlote estiver sendo processado, esse microlote precisará ser concluído antes que o novo intervalo de gatilho seja aplicado. Como resultado, depois de alterar o intervalo de disparo, você pode observar um processamento de microlote com as configurações especificadas anteriormente. O seguinte descreve o comportamento esperado ao fazer a transição:
Transição do intervalo baseado em tempo para
AvailableNow: um microlote pode ser processado antes de todos os registros disponíveis serem processados como um lote incremental.Transição de
AvailableNowpara um intervalo baseado em tempo: o processamento pode continuar de todos os registros que estavam disponíveis quando o últimoAvailableNowtrabalho foi disparado. Este comportamento é esperado.
Recuperando-se de falhas de consulta
Observação
Se você estiver tentando se recuperar de uma falha de consulta associada a um lote incremental, alterar o intervalo de gatilho não resolverá esse problema porque o lote ainda deve ser concluído. Amplie 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.