Coletores em LakeFlow Pipelines
Por default, os fluxos de pipeline gravam os resultados em tabelas Delta gerenciadas pelo Unity Catalog, tipicamente tabelas de transmissão ou views materializadas. Coletores são um destino de saída alternativo que permitem gravar dados transformados em destinos fora do armazenamento gerenciado pelo Databricks, como serviços de transmissão de eventos ou armazenamentos de dados personalizados.
Você define um sink usando uma das APIs sink e, em seguida, faz referência a ele como target na definição do append_flow ou update_flow.
Quando usar as pias
O Databricks recomenda usar coletores quando for necessário:
- Construa casos de uso operacionais com baixa latência, como detecção de fraudes, analítica em tempo real ou recomendações de clientes, onde os dados devem fluir para um barramento de mensagens em vez de armazenamento em cloud. Para cargas de trabalho que exigem latência de milissegundos, consulte Usar o modo em tempo real em Lakeflow Pipelines.
- Grave dados transformados em tabelas gerenciadas por uma instância Delta externa, incluindo tabelas gerenciadas e externas do Unity Catalog.
- Realizar ETL reverso em sistemas externos, como escrever dados processados de volta para tópicos do Apache Kafka para consumo fora do Databricks.
- Escreva em um formato não suportado nativamente pelo Databricks, usando fontes de dados personalizadas em Python.
Tipos de destino
Os pipelines são compatíveis com os seguintes tipos de destino:
Tipo de pia | Descrição |
|---|---|
Destinos de tabelas Delta | Gravar em tabelas Delta gerenciadas ou externas do Unity Catalog. Especifique um caminho de arquivo ou um nome de tabela totalmente qualificado. |
Apache Kafka sinks | A gravação em tópicos do Apache Kafka pode ser realizada utilizando o conector Kafka incluído no runtime do pipeline. |
Destinos dos Hubs de Eventos do Azure | Grave em Hubs de Eventos do Azure usando a interface Kafka. Usa as mesmas opções que os sinks Kafka. |
Sinos personalizados em Python | Escreva em qualquer armazenamento de dados usando uma fonte de dados personalizada Python registrada com |
| Aplicar lógica Python personalizada a cada microlote de dados de transmissão. Utilize quando for necessário gravar em vários destinos, executar upserts, ou usar alvos que não ofereçam suporte a gravações em transmissão nativamente. |
| Aplique lógica Python personalizada a cada linha de transmissão de dados. Use quando você precisar gravar cada registro em um destino que não tem sink integrada, como uma API externa ou um armazenamento de key-valor. |
APIs de destino
Os pipelines têm três APIs para criar sinks:
create_sink(): Cria um destino nomeado de um tipo compatível (Delta, Kafka, AEH ou fonte de dados personalizada Python). Disponível apenas para o Python. Consulte Usar destinos em pipelines.foreach_batch_sink(): Decora uma função Python que é executada para cada micro-batch de dados em transmissão. Oferece máxima flexibilidade para lógica de escrita personalizada. Consulte usar o ForEachBatch para gravar em coletores de dados arbitrários em pipelines.foreach_sink(): Decora uma função Python, ou aceita um objeto writer, que é executado para cada linha de dados de transmissão. Consulte Usar um sinkForEachpara gravar cada linha em pipelines.
Você faz referência a todos os três tipos de coletor como o target de um append_flow ou update_flow.
Limitações
-
Coletores estão disponíveis apenas para o Python. SQL não é compatível.
-
Apenas consultas de transmissão são suportadas. Queries em lote não são compatíveis.
-
Somente
append_floweupdate_flowpodem gravar nos sinks.create_auto_cdc_flowe outros tipos de fluxo não são suportados.- Os fluxos de atualização não suportam sinks de tabela Delta Lake.
-
Expectativas de pipeline não são compatíveis com destinos.
-
Um refresh completo não limpa os dados previamente gravados em sinks.