Configurar intervalos de gatilho estruturados transmitidos
Apache Spark transmissão estruturada processa dados de forma incremental; controlar o intervalo de disparo para o processamento de lotes permite que você use transmissão estruturada para cargas de trabalho, incluindo processamento em tempo quase real, atualizando bancos de dados a cada 5 minutos ou uma vez por hora, ou lotes processando todos os novos dados por um dia ou semana.
Como o Databricks Auto Loader usa transmissão estruturada para carregar dados, entender como os gatilhos funcionam fornece a maior flexibilidade para controlar custos enquanto ingere dados com a frequência desejada.
Especificando intervalos de acionamento baseados em tempo
transmissão estruturada refere-se a intervalos de disparo baseados em tempo como “micro-lotes de intervalo fixo”. Usando a palavra-chave processingTime
, especifique uma duração de tempo como strings, como .trigger(processingTime='10 seconds')
.
Quando você especifica um intervalo trigger
muito pequeno (menos de dezenas de segundos), o sistema pode executar verificações desnecessárias para ver se novos dados chegam. Configure seu tempo de processamento para equilibrar os requisitos de latência e a taxa de chegada dos dados na origem.
Configurando o processamento de lotes incrementais
Importante
No Databricks Runtime 11.3 LTSe acima, a configuração Trigger.Once
foi preterida. Databricks recomenda que você use Trigger.AvailableNow
para todas as cargas de trabalho de processamento de lotes incrementais.
A opção de gatilho disponível agora 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 tamanho variam de acordo com a fonte de dados).
O Databricks oferece suporte ao uso de Trigger.AvailableNow
para processamento de lotes incrementais de muitas fontes estruturadas de transmissão. A tabela a seguir inclui a versão mínima suportada do Databricks Runtime necessária para cada fonte de dados:
Fonte |
Versão mínima do Databricks Runtime |
---|---|
Fontes de arquivo (JSON, Parquet, etc.) |
9.1 LTS |
Delta Lake |
10,4 LTS |
Carregador automático |
10,4 LTS |
Apache Kafka |
10,4 LTS |
Kinesis |
13.1 |
Qual é o intervalo de disparo padrão?
transmissão estruturada default para micro-lotes de intervalo fixo de 500ms. A Databricks recomenda que você sempre especifique um trigger
personalizado para minimizar os custos associados à verificação da chegada de novos dados e ao processamento de lotes subdimensionados.
Alterando intervalos de acionamento entre execuções
Você pode alterar o intervalo de acionamento entre as execuções enquanto usa o mesmo ponto de verificação.
Se um Job de transmissão estruturada parar enquanto um microlote estiver sendo processado, esse microlote deverá ser concluído antes que o novo intervalo de acionamento seja aplicado. Dessa forma, você poderá observar um processamento de microlotes com as configurações especificadas anteriormente após alterar o intervalo de acionamento.
Ao passar do intervalo baseado em tempo para o uso AvailableNow
, isso pode resultar em um processamento de microlotes antes do processamento de todos os registros disponíveis como lotes incrementais.
Ao mudar de AvailableNow
para um intervalo baseado em tempo, isso pode resultar na continuação do processamento de todos os registros que estavam disponíveis quando o último Job AvailableNow
foi acionado. Este é o comportamento esperado.
Observação
Se você estiver tentando se recuperar de uma falha query associada a lotes incrementais, alterar o intervalo de acionamento não resolverá esse problema porque os lotes ainda deverão ser concluídos. A Databricks recomenda aumentar a capacidade compute usada para processar os lotes para tentar resolver o problema. Em casos raros, pode ser necessário reiniciar a transmissão com um novo posto de controle.
O que é o modo de processamento contínuo?
Apache Spark oferece suporte a um intervalo de gatilho adicional conhecido como processamento contínuo. Este modo foi classificado como experimental desde o Spark 2.3; consulte a sua equipa account da Databricks para se certificar de que compreende as vantagens deste modelo de processamento.
Observe que esse modo de processamento contínuo não se relaciona de forma alguma com o processamento contínuo aplicado em Delta Live Tables.