Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
De forma predeterminada, los flujos de procesamiento de pipeline escriben los resultados en tablas Delta administradas por Unity Catalog, normalmente tablas de transmisión o vistas materializadas. Los receptores son un destino de salida alternativo que permite escribir datos transformados en destinos fuera del almacenamiento administrado por Databricks, como servicios de streaming de eventos o almacenes de datos personalizados.
Los sumideros se usan con flujos de anexado. Define un sink mediante una de las API de sink y, a continuación, haz referencia a él como target en la definición de append_flow.
Cuándo usar sumideros
Databricks recomienda usar sinks cuando necesite lo siguiente:
- Cree casos de uso operativos con baja latencia, como la detección de fraudes, el análisis en tiempo real o las recomendaciones de los clientes, donde los datos deben fluir a un bus de mensajes en lugar de almacenamiento en la nube. Para las cargas de trabajo que requieren una latencia de milisegundos, consulte Uso del modo de tiempo real en canalizaciones declarativas de Lakeflow Spark.
- Escriba los datos transformados en tablas gestionadas por una instancia externa de Delta, incluidas las tablas administradas por Unity Catalog y las tablas externas.
- Realizar ETL inverso en sistemas externos, como volver a escribir los datos procesados en temas de Apache Kafka para su consumo fuera de Azure Databricks.
- Escribir en un formato que Azure Databricks no admite de forma nativa, mediante orígenes de datos personalizados de Python.
Tipos de destino
Las canalizaciones admiten los siguientes tipos de destino:
| Tipo de sumidero | Description |
|---|---|
| Receptores de tabla Delta | Escribir en las tablas Delta administradas o externas de Unity Catalog. Especifique una ruta de archivo o un nombre de tabla completamente calificado. |
| Receptores de Apache Kafka | Escriba en los tópicos de Apache Kafka utilizando el conector de Kafka incluido en el entorno de ejecución de la canalización. |
| Receptores de Azure Event Hubs | Escriba en Azure Event Hubs mediante la interfaz de Kafka. Usa las mismas opciones que los sinks de Kafka. |
| Sumideros personalizados de Python | Escriba en cualquier almacén de datos usando un origen de datos personalizado de Python registrado con spark.dataSource.register. |
| Sumideros ForEachBatch | Aplique una lógica de Python personalizada a cada microlote de datos de streaming. Use cuando necesite escribir en varios destinos, realizar upserts o usar destinos que no admitan escrituras de streaming de forma nativa. |
API de sumideros
Las canalizaciones proporcionan dos API para crear receptores:
-
create_sink(): crea un sumidero con nombre de un tipo admitido (Delta, Kafka, AEH o un origen de datos personalizado de Python). Solo está disponible en Python. Consulte Uso de sinks en canalizaciones. -
foreach_batch_sink(): Decora una función de Python que se ejecuta para cada microlote de datos en streaming. Proporciona máxima flexibilidad para la lógica de escritura personalizada. Consulte Uso de ForEachBatch para escribir en receptores de datos arbitrarios en canalizaciones.
Se hace referencia a ambos tipos de sumidero como el target de un append_flow.
Limitaciones
- Los sumideros solo están disponibles en Python. SQL no se admite.
- Solo se admiten consultas de streaming. No se admiten consultas por lotes.
- Solo
append_flowpuede escribir en receptores;create_auto_cdc_flowy otros tipos de flujo no se admiten. - Las expectativas de canalización no se admiten para los receptores.
- Ejecutar una actualización completa no elimina los datos escritos previamente en los sinks.