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. O Azure Databricks suporta os seguintes padrões de cargas de trabalho em streaming:
- Contínuo: Um pipeline que roda sem parar e processa novos dados à medida que chegam, para cargas de trabalho com requisitos de atualidade medidos em segundos ou minutos.
- Tempo real: Um pipeline contínuo que processa registros com latência inferior a um segundo para cargas de trabalho operacionais suportadas. O modo em tempo real está disponível nos pipelines Lakeflow e no Structured Streaming.
- 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. |
| Processamento operacional que requer latência de menos de um segundo | Modo em tempo real em pipelines Lakeflow em computação serverless | O modo em tempo real processa os registros à medida que eles chegam em lotes de longa duração. Verifique o runtime, a origem, o coletor e requisitos do operador. |
| Ingestão incremental do armazenamento em nuvem | Use o Auto Loader dentro dos pipelines Lakeflow (para baixa latência) ou em um trabalho serverless com Trigger.AvailableNow() (se uma latência maior 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 gerenciados 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 do 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 pipelining de fluxo é habilitado por padrão nos pipelines sem servidor do Lakeflow. 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() é suportado, mas obsoleto. Migre consultas existentes para Trigger.AvailableNow().
Transmissão em tempo real
O modo em tempo real nos pipelines Lakeflow suporta cargas de trabalho operacionais abaixo de um segundo, como detecção de fraudes e personalização em tempo real. Está disponível na computação clássica e na computação sem servidor. Configure um fluxo de atualização com um coletor com suporte e revise os requisitos de runtime e operador. Fluxos de atualização em tempo real não podem escrever em tabelas Delta Lake.
O modo pipeline contínuo e o modo em tempo real atendem a diferentes requisitos de latência. Ativar apenas o modo contínuo não ativa o modo em tempo real.
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 Conceitos de conectores do 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
As seguintes restrições de streaming se aplicam a notebooks e jobs serverless. Para requisitos e limitações do pipeline, veja Configurar um pipeline serverless e Usar o modo em tempo real nos pipelines Lakeflow.
- 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 fluxos 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
- Conheça os conceitos dos conectores do Lakeflow Connect