Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Par défaut, les flux de pipeline écrivent des résultats dans des tables Delta gérées par le catalogue Unity, généralement des tables de streaming ou des vues matérialisées. Les récepteurs sont une autre cible de sortie qui vous permet d’écrire des données transformées vers des destinations situées en dehors du stockage géré par Databricks, comme des services de streaming d’événements ou des magasins de données personnalisés.
Les récepteurs sont utilisés avec des flux en ajout. Vous définissez un collecteur à l’aide de l’une des API de collecteur, puis faites-y référence en tant que target dans votre définition append_flow.
Quand utiliser des sinks
Databricks recommande d’utiliser des récepteurs lorsque vous devez :
- Créez des cas d’usage opérationnels avec une faible latence, comme la détection des fraudes, l’analyse en temps réel ou les recommandations des clients, où les données doivent circuler vers un bus de messages plutôt que vers le stockage cloud. Pour les charges de travail nécessitant une latence en millisecondes, consultez Utiliser le mode en temps réel dans les pipelines Lakeflow.
- Écrivez des données transformées dans des tables gérées par une instance Delta externe, y compris les tables gérées par le catalogue Unity et les tables externes.
- Effectuer un ETL inversé vers des systèmes externes, par exemple en réécrivant des données traitées dans des topics Apache Kafka pour qu’elles soient consommées en dehors d’Azure Databricks.
- Écrire dans un format non pris en charge nativement par Azure Databricks, à l’aide de sources de données Python personnalisées.
Types de récepteur
Les pipelines prennent en charge les types de récepteurs suivants :
| Type de récepteur | Description |
|---|---|
| Récepteurs de table Delta | Écrivez dans des tables Delta gérées par Unity Catalog ou externes. Spécifiez un chemin de fichier ou un nom de table entièrement qualifié. |
| Récepteurs Apache Kafka | Écrire vers des rubriques Apache Kafka à l’aide du connecteur Kafka inclus dans le runtime du pipeline. |
| Récepteurs Azure Event Hubs | Écrivez dans Azure Event Hubs à l’aide de l’interface Kafka. Utilise les mêmes options que les récepteurs Kafka. |
| Sinks Python personnalisés | Écrire vers n’importe quel magasin de données à l’aide d’une source de données Python personnalisée enregistrée avec spark.dataSource.register. |
| Récepteurs ForEachBatch | Appliquez une logique de Python personnalisée à chaque micro-lot de données de streaming. À utiliser lorsque vous devez écrire vers plusieurs destinations, effectuer des opérations d’upsert ou utiliser des cibles qui ne prennent pas en charge nativement l’écriture en streaming. |
API des récepteurs
Les pipelines fournissent deux API pour la création de récepteurs :
-
create_sink(): crée un récepteur de sortie nommé d’un type pris en charge (Delta, Kafka, AEH ou une source de données Python personnalisée). Disponible uniquement dans Python. Consultez Utiliser des récepteurs dans des pipelines. -
foreach_batch_sink(): décore une fonction Python qui s’exécute pour chaque micro-lot de données en streaming. Offre une flexibilité maximale pour la logique d’écriture personnalisée. Consultez Utiliser ForEachBatch pour écrire vers des récepteurs de données arbitraires dans des pipelines.
Les deux types de récepteurs sont utilisés comme target d’un append_flow.
Limitations
- Les récepteurs ne sont disponibles que dans Python. SQL n’est pas pris en charge.
- Seules les requêtes de diffusion en continu sont prises en charge. Les requêtes Batch ne sont pas prises en charge.
- Seul
append_flowpeut écrire vers des récepteurs ;create_auto_cdc_flowet les autres types de flux ne sont pas pris en charge. - Les règles de validation du pipeline ne sont pas prises en charge pour les récepteurs.
- L’exécution d’une actualisation complète ne supprime pas les données déjà écrites dans les récepteurs.