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 descreve como escolher a configuração adequada para cargas de trabalho de streaming sem servidor no Azure Databricks, incluindo pipelines contínuos, ingestão incremental e conectores gerenciados. Escolher a configuração certa depende das necessidades de origem, forma e latência do fluxo.
O que é considerado uma carga de trabalho de streaming
Uma carga de trabalho de streaming lê dados ilimitados de uma fonte (como armazenamento de objetos na nuvem, um barramento de mensagens ou um fluxo de alterações) e grava os dados em um destino de forma incremental. Azure Databricks dá suporte a dois padrões de cargas de trabalho de streaming:
- Contínuo: um pipeline que é executado sem parar e processa novos dados à medida que chegam. A latência é medida em segundos.
- Incremental (também chamado de acionado): um pipeline que é executado com base em um agendamento ou gatilho, processa todos os dados que chegaram desde a última execução e para. A latência é medida em minutos.
Algumas cargas de trabalho parecem ser pipelines de streaming, mas tecnicamente não são pipelines. Exemplos incluem um serviço que mantém um websocket aberto para escutar eventos, um aplicativo de chat que mantém uma conexão persistente por usuário ou um receptor de webhook que manipula solicitações HTTP de entrada. Estes são aplicativos, não pipelines de streaming. Para obter a opção sem servidor certa para essas cargas de trabalho, consulte Cargas de trabalho que não são pipelines de streaming.
Escolher a configuração de streaming correta
Esta tabela mapeia casos de uso para as configurações sem servidor que melhor se ajustam a elas. As seções a seguir nesta página fornecem mais detalhes sobre essas recomendações.
| Caso de uso | Configuração recomendada | Por que |
|---|---|---|
| ETL ou transformações de streaming contínuo com baixa latência | pipelines do Lakeflow no modo contínuo | O modo contínuo foi projetado para fluxos sempre ativos. O pipeline de fluxo executa microbatches de forma concorrente, melhorando a vazão e a latência. O estado gerenciado mantém a recuperação automática. |
| Ingestão incremental do armazenamento em nuvem | Use o Carregador Automático dentro de pipelines do Lakeflow (para baixa latência) ou em um trabalho sem servidor com Trigger.AvailableNow() (se a latência menor for aceitável). |
O Carregador Automático rastreia novos arquivos com eficiência.
Trigger.AvailableNow() processa a fila de pendências e, em seguida, encerra a execução, o que se adequa a uma cadência agendada ou sob demanda. |
| Ingestão gerenciada a partir de fontes SaaS ou CDC de banco de dados | Conectores padrão no Lakeflow Connect | Conectores totalmente gerenciados com pipelines de ingestão sem servidor. Nenhum código necessário para fontes com suporte. |
| Streaming de SQL em tabelas Delta | Tabelas de streaming | Processamento incremental nativo em SQL para fontes orientadas a anexação, com pipelines e atualização gerenciados. |
| Processamento periódico em microlotes em um notebook ou trabalho |
Trabalho sem servidor com Trigger.AvailableNow() |
Econômico quando a atualização em nível de minuto é suficiente. A computação sem servidor é iniciada rapidamente e é encerrada quando o lote é concluído. |
Streaming contínuo
Para transmissão contínua em computação sem servidor, use os pipelines Lakeflow no modo contínuo. O pipeline permanece em execução, processa registros à medida que chegam e se recupera automaticamente de falhas.
Para configurar um fluxo contínuo:
- Configure o pipeline como sem servidor. Consulte Configurar um pipeline sem servidor.
- Defina o modo do pipeline como contínuo. Confira Modo de pipeline disparado versus contínuo.
- Use tabelas de streaming para saídas mantidas incrementalmente.
Dica
O pipeline de fluxo é habilitado por padrão em pipelines Lakeflow sem servidor. Microlotes são executados de forma concorrente, em vez de sequencial, o que melhora a vazão para fluxos com alta carga de ingestão.
Gatilhos do fluxo estruturado baseados em tempo, como Trigger.ProcessingTime(interval) e Trigger.Continuous(interval), não estão disponíveis em notebooks ou trabalhos sem servidor. Use pipelines do Lakeflow no modo contínuo para o padrão sempre ativo. Consulte Limitações de streaming.
Trigger.Once() tem suporte, mas está descontinuado — migre as consultas existentes para Trigger.AvailableNow().
Streaming incremental e acionado por eventos
Para streaming incremental, execute o Streaming Estruturado com Trigger.AvailableNow() em um job sem servidor. Cada execução processa todos os dados que chegaram desde o último ponto de verificação e, em seguida, é encerrada.
Para configurar um trabalho sem servidor com streaming incremental:
- Agende a tarefa com a frequência de que você precisa. Consulte Execução de trabalhos agendados.
- Use
Trigger.AvailableNow()em cada consulta de streaming no trabalho. Confira Configurar intervalos de gatilho do Fluxo Estruturado. - Ajuste o tamanho do lote com
maxFilesPerTriggeroumaxBytesPerTriggerpara manter a memória previsível. Consulte as práticas recomendadas para computação sem servidor.
O exemplo a seguir lê novos arquivos do armazenamento em nuvem (source_path) com o Carregador Automático, processa todos os dados disponíveis no momento da execução e grava em uma tabela Delta:
(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json")
.option("cloudFiles.maxFilesPerTrigger", 1000)
.load(source_path)
.writeStream
.trigger(availableNow=True)
.option("checkpointLocation", checkpoint_path)
.toTable("catalog.schema.target_table"))
Um trabalho agendado Trigger.AvailableNow() é o padrão de streaming com melhor custo-benefício na computação sem servidor quando uma latência na casa dos minutos é aceitável. A computação começa em segundos, executa o lote e é desligada.
Ingestão gerenciada
Se a origem for um aplicativo SaaS ou um banco de dados operacional, use o Lakeflow Connect em vez de escrever código de Streaming Estruturado. O Lakeflow Connect executa pipelines de ingestão sem servidor para conectores como Salesforce, Workday, SQL Server CDC e PostgreSQL CDC. Consulte Conectores gerenciados no Lakeflow Connect.
Esse caminho é a resposta certa quando:
- Há um conector para sua fonte.
- Você deseja um pipeline gerenciado em vez de código personalizado.
- Você precisa de evolução de esquema, linhagem e monitoramento prontos para uso.
Processamento de dados incremental gerenciado por SQL
Para equipes que priorizam SQL, use tabelas de streaming para cargas de trabalho de streaming nativas em SQL. Você pode definir tabelas de streaming dentro de pipelines do Lakeflow ou como tabelas de streaming autônomas.
Para tabelas de streaming autônomas criadas com a instrução CREATE OR REFRESH STREAMING TABLE SQL, a atualização de dados inicial e a população começam imediatamente. Um pipeline dedicado sem servidor é criado e gerenciado automaticamente pelo sistema para cada tabela de streaming.
Se você precisar de resultados de consultas semânticas em lote com atualização gerenciada, use visualizações materializadas. Confira Exibições materializadas.
Cargas de trabalho que não são pipelines de streaming
Uma carga de trabalho que precisa manter uma conexão de longa duração, escutar em uma porta ou responder a requisições HTTP de entrada não é um pipeline de streaming; é uma aplicação. Não execute essas cargas de trabalho em um trabalho sem servidor. As opções certas do Databricks são:
- Serviços de longa execução que precisam de uma conexão persistente ou endpoint HTTP: crie o serviço usando o Databricks Apps. O Databricks Apps é a plataforma sem servidor para hospedar aplicativos personalizados em Azure Databricks, incluindo aplicativos FastAPI, Flask, Streamlit, Dash, Gradio, Node.jse Shiny. Consulte Os Aplicativos do Databricks.
- Webhooks de entrada ou ouvintes de eventos: exponha um endpoint HTTP no Aplicativos do Databricks ou processe o webhook em um serviço externo e grave os eventos em armazenamento em nuvem ou em um barramento de mensagens, para então capturá-los com um pipeline de streaming sem servidor.
- Troca de token ou credencial personalizada: use entidades de serviço com OAuth ou chame as APIs REST do Databricks por meio de um aplicativo. Os pipelines de streaming não contêm sessões por usuário ou estado de token personalizado.
Se você estiver avaliando se sua carga de trabalho se encaixa em um pipeline de streaming, pergunte:
- A carga de trabalho lê de uma fonte de dados ilimitada e grava em um coletor? Se sim, trata-se de um pipeline de streaming.
- A carga de trabalho precisa manter uma conexão aberta a um cliente? Se sim, é um aplicativo; use os Aplicativos do Databricks.
Limitações
A computação sem servidor impõe as seguintes restrições de streaming. Nenhuma delas impede as cargas de trabalho acima quando emparelhadas com o produto certo.
- Não há suporte para gatilhos de streaming estruturados baseados em tempo (
Trigger.ProcessingTime(interval)eTrigger.Continuous(interval)) em notebooks ou trabalhos sem servidor. Use os pipelines do Lakeflow no modo contínuo para streams sempre ativos ouTrigger.AvailableNow()para execuções acionadas. Consulte Limitações de streaming. - As consultas de streaming sem um gatilho explícito falham com
INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED. O Apache Spark usa como padrãoTrigger.ProcessingTime("0 seconds"), que não tem suporte na computação sem servidor. Sempre definaTrigger.AvailableNow()em cada consulta de streaming, ou use pipelines do Lakeflow no modo contínuo. - Todas as limitações para streaming no modo de acesso padrão também se aplicam à computação sem servidor. Consulte Limitações de streaming.
Próximas Etapas
- Configurar um pipeline sem servidor
- Executar trabalhos do Lakeflow na computação sem servidor
- Explorar conectores gerenciados no Lakeflow Connect