Ce document explique comment intégrer OpenLineage à Knowledge Catalog (anciennement Dataplex Universal Catalog) pour importer et visualiser la traçabilité des données à partir de systèmes externes. En agissant en tant que consommateur OpenLineage à l'aide de l'API REST ProcessOpenLineageRunEvent, Knowledge Catalog vous permet d'unifier la traçabilité des pipelines personnalisés avec la traçabilité intégrée des services Google Cloud .
Présentation
OpenLineage est une plate-forme ouverte permettant de collecter et d'analyser des informations sur la traçabilité des données. À l'aide d'une norme ouverte pour les données de traçabilité, OpenLineage capture les événements de traçabilité des composants de pipeline de données qui utilisent une API OpenLineage pour générer des rapports sur les exécutions, les jobs et les ensembles de données.
L'API Data Lineage vous permet d'importer des événements OpenLineage pour les afficher dans l'interface Web de Knowledge Catalog, ainsi que des informations de traçabilité provenant de servicesGoogle Cloud , tels que BigQuery, Managed Service pour Apache Airflow, Cloud Data Fusion et Managed Service pour Apache Spark.
Pour importer des événements OpenLineage qui utilisent la spécification OpenLineage, utilisez la méthode d'API REST ProcessOpenLineageRunEvent et mappez les facettes OpenLineage aux attributs de l'API Data Lineage.
Limites de l'intégration d'OpenLineage
Versions compatibles : l'API Data Lineage est compatible avec les versions majeures 1 et 2 d'OpenLineage.
Actions de l'API : le point de terminaison de l'API Data Lineage
ProcessOpenLineageRunEventagit uniquement en tant que consommateur de messages OpenLineage, et non en tant que producteur. L'API vous permet d'envoyer à Knowledge Catalog des informations de traçabilité générées par n'importe quel outil ou système compatible avec OpenLineage. Certains services Google Cloud , tels que Managed Service pour Apache Spark et Managed Airflow, incluent des producteurs OpenLineage intégrés qui peuvent envoyer des événements à ce point de terminaison, ce qui automatise la capture de la traçabilité à partir de ces services.Fonctionnalités non compatibles : l'API Data Lineage n'est pas compatible avec les éléments suivants :
- Toute version ultérieure d'OpenLineage avec des modifications du format de message
DatasetEventJobEvent
Taille des messages : la taille maximale d'un message est de 5 Mo.
Longueur du nom : la longueur de chaque nom complet dans les entrées et les sorties est limitée à 4 000 caractères.
Traçabilité au niveau des colonnes : le point de terminaison
ProcessOpenLineageRunEventmatérialise les bords de traçabilité au niveau de la table uniquement pour les événements OpenLineage personnalisés. Les graphiques de traçabilité au niveau des colonnes ne sont générés que pour les transformations SQL BigQuery et les jobs Managed Service pour Apache Spark. Les facettes personnalisées au niveau des colonnes ne sont pas affichées dans la console.Limites de liens : les liens sont regroupés par événement, avec un maximum de 100 liens par événement. Le nombre total maximal de liens au niveau de la table est de 1 000. Pour les moteurs automatisés compatibles qui collectent la traçabilité au niveau des colonnes, si un message contient plus de 1 500 liens au niveau des colonnes, les informations au niveau des colonnes sont ignorées.
Champ d'application du graphique : Knowledge Catalog affiche un graphique de traçabilité pour chaque exécution de job, montrant les entrées et les sorties des événements de traçabilité. Il n'est pas compatible avec les processus de niveau inférieur tels que les étapes Spark.
Mappage des attributs de facette OpenLineage
Pour en savoir plus sur le mappage OpenLineage, consultez Mappage OpenLineage.
Importer un événement OpenLineage
Si vous n'avez pas encore configuré OpenLineage, consultez Premiers pas.
Pour importer un événement OpenLineage dans Knowledge Catalog, appelez la méthode API ProcessOpenLineageRunEvent.
C#
C#
Avant d'essayer cet exemple, suivez les instructions de configuration pour C# décrites dans le guide de démarrage rapide de la traçabilité des données à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Lineage pour C#.
Pour vous authentifier auprès de la traçabilité des données, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide de la traçabilité des données à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Lineage pour Go.
Pour vous authentifier auprès de la traçabilité des données, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de la traçabilité des données à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Lineage pour Java.
Pour vous authentifier auprès de la traçabilité des données, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python décrites dans le guide de démarrage rapide de la traçabilité des données à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Lineage pour Python.
Pour vous authentifier auprès de la traçabilité des données, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Ruby
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby décrites dans le guide de démarrage rapide de la traçabilité des données à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Lineage pour Ruby.
Pour vous authentifier auprès de la traçabilité des données, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
REST
Pour importer un événement OpenLineage, utilisez la méthode processOpenLineageRunEvent.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_ID: ID de votre projet Google Cloud .LOCATION_ID: emplacement Google Cloud , par exempleus-central1.
Méthode HTTP et URL :
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:processOpenLineageRunEvent
Corps JSON de la requête :
{
"eventTime": "2023-04-04T13:21:16.098Z",
"eventType": "COMPLETE",
"inputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"job": {
"name": "somename",
"namespace": "customnamespace"
},
"outputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"producer": "someproducer",
"run": {
"runId": "somerunid"
},
"schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"
}
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{
"process": "projects/my-project/locations/us-central1/processes/my-process",
"run": "projects/my-project/locations/us-central1/processes/my-process/runs/my-run",
"lineageEvents": [
"projects/my-project/locations/us-central1/processes/my-process/runs/my-run/lineageEvents/my-lineage-event"
]
}
Outils d'envoi de messages OpenLineage
Pour simplifier l'envoi d'événements à l'API Data Lineage, vous pouvez utiliser différents outils et bibliothèques :
- Bibliothèques clientes Google Cloud pour la traçabilité des données : Google fournit des bibliothèques clientes pour interagir avec l'API Data Lineage de manière programmatique. Pour obtenir des instructions d'installation, consultez Bibliothèques clientes.
- Bibliothèque de producteurs Java Google Cloud : Google fournit une bibliothèque Java Open Source pour vous aider à créer et à envoyer des événements OpenLineage à l'API Data Lineage. Pour en savoir plus, consultez l'article de blog La bibliothèque Java Producer pour la traçabilité des données est désormais Open Source. La bibliothèque est disponible sur GitHub et Maven.
- Transport GCP OpenLineage : pour les producteurs OpenLineage basés sur Java, un transport GcpLineage dédié est disponible. Il simplifie l'intégration à l'API Data Lineage en minimisant le code nécessaire pour envoyer des événements à l'API Data Lineage.
GcpLineageTransportpeut être configuré en tant que récepteur d'événements pour tout producteur OpenLineage existant, tel qu'Airflow, Spark et Flink. Pour en savoir plus et obtenir des exemples, consultez GcpLineage.
Analyser les informations d'OpenLineage
Pour analyser les événements OpenLineage importés, consultez Afficher les graphiques de traçabilité dans l'interface utilisateur de Knowledge Catalog.
Données de facette OpenLineage stockées
L'API Data Lineage ne stocke pas toutes les données de facettes des messages OpenLineage. L'API Data Lineage stocke les champs d'aspect suivants :
spark_versionopenlineage-spark-versionspark-version
- tous les
spark.logicalPlan.* environment-properties(facette de traçabilité Google Cloud personnalisée)origin.sourcetypeetorigin.namespark.app.idspark.app.namespark.batch.idspark.batch.uuidspark.cluster.namespark.cluster.regionspark.job.idspark.job.uuidspark.project.idspark.query.node.namespark.session.idspark.session.uuid
L'API Data Lineage stocke les informations suivantes :
eventTimerun.runIdjob.namespacejob.name
Étapes suivantes
- En savoir plus sur les intégrations de la traçabilité des données avec Managed Service pour Apache Spark et de la traçabilité des données Hive.
- Essayez-le dans un atelier interactif : Capturer et explorer les mises à jour de données avec la traçabilité des données et OpenLineage.