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 certa para cargas de trabalho de streaming sem servidor em 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 por gatilho): um pipeline executado por agendamento ou por gatilho, que 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. Esses 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 de streaming contínuo de baixa latência ou transformações | Pipelines Declarativos do Lakeflow Spark no modo contínuo | O modo contínuo foi projetado para fluxos sempre ativos. O pipeline de fluxo executa microlotes simultaneamente, melhorando a taxa de transferência 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 Declarativos do Spark 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 o backlog e, em seguida, sai, o que se ajusta a uma cadência agendada ou sob demanda. |
| Ingestão gerenciada 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 gerenciados e atualização. |
| Processamento periódico de microlote em um notebook ou trabalho |
Trabalho sem servidor com Trigger.AvailableNow() |
Tem bom custo-benefício quando a atualização no nível de minutos é suficiente. A computação sem servidor é iniciada rapidamente e é encerrada quando o lote é concluído. |
Streaming contínuo
Para streaming contínuo na computação sem servidor, use o Lakeflow Spark Declarative Pipelines 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 no Lakeflow Spark Declarative Pipelines sem servidor. Os microbatches são executados simultaneamente em vez de sequencialmente, o que melhora a taxa de transferência para fluxos pesados de ingestão.
Gatilhos do Structured Streaming baseados em tempo, como Trigger.ProcessingTime(interval) e Trigger.Continuous(interval), não estão disponíveis em notebooks ou jobs sem servidor. Use o Lakeflow Spark Declarative Pipelines no modo contínuo para o padrão always-on. Consulte Limitações de streaming.
Trigger.Once() tem suporte, mas está descontinuado — migre as consultas existentes para Trigger.AvailableNow().
Streaming incremental e disparado
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 todas as consultas 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 mais econômico na computação sem servidor quando a latência de nível de minuto é 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 do 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 do Lakeflow Spark Declarative Pipelines 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 recebidas 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 ponto de extremidade HTTP nos Aplicativos do Databricks ou encerre o webhook em um serviço externo e escreva eventos no armazenamento em nuvem ou em um barramento de mensagens e, em seguida, pegue-os com um pipeline de streaming sem servidor.
- Token personalizado ou troca de credenciais: use principais de serviço com OAuth ou chame as APIs REST do Databricks a partir 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 não associado e grava em um coletor? Em caso afirmativo, é 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 Lakeflow Spark Declarative Pipelines 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 o Lakeflow Spark Declarative Pipelines 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