Intégration avec OpenLineage

OpenLineage est une plate-forme ouverte permettant de collecter et d'analyser des informations de traçabilité des données. Basé sur une norme ouverte pour la traçabilité des données, OpenLineage capture les événements de traçabilité des composants du pipeline de données qui utilisent une API OpenLineage pour générer des rapports sur les exécutions, les tâches et les ensembles de données.

Grâce à l'API Data Lineage, vous pouvez importer des événements OpenLineage à afficher dans l'interface utilisateur de Dataplex à côté des informations de traçabilité des services Google Cloud, tels que BigQuery, Cloud Composer, Cloud Data Fusion et Dataproc.

Pour importer des événements OpenLineage qui utilisent la spécification OpenLineage, utilisez la méthode API REST ProcessOpenLineageRunEvent et mappez les attributs OpenLineage aux attributs de l'API Data Lineage.

Limites

  • L'API Data Lineage est compatible avec les versions majeures 1 et 2 d'OpenLineage.

  • L'API Data Lineage n'est pas compatible avec les éléments suivants:

    • Toute version d'OpenLineage ultérieure avec des modifications de format de message
    • DatasetEvent
    • JobEvent
  • La taille maximale d'un message est de 5 Mo.

  • La longueur de chaque nom qualifié complet dans les entrées et les sorties est limitée à 4 000 caractères.

  • Les liens sont regroupés par événements comportant 100 liens. Le nombre total maximal de liens est de 1 000.

  • Dataplex affiche un graphique de traçabilité pour chaque tâche exécutée, avec 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 OpenLineage

La méthode ProcessOpenLineageRunEvent de l'API REST mappe les attributs OpenLineage aux attributs de l'API Data Lineage comme suit:

Attributs de l'API Data Lineage Attributs OpenLineage
Process.name (nom du processus) projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME
Process.displayName Job.namespace + ":" + Job.name
Process.attributes Job.facets (voir Données stockées)
Run (Exécuter) projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID
Exécuter.displayName Run.runId
Run.attributes Run.facets (voir Données stockées)
Run (Exécuter) .startTime eventTime
Run (Exécuter) eventTime
Run (Exécuter) eventType
LineageEvent.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID/lineageEvents/HASH_OF_JOB_RUN_INPUT_OUTPUTS_OF_EVENT (par exemple, projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333)
LineageEvent.EventLinks.source Entrées (fqn correspond à la concaténation des espaces de noms et des noms)
LineageEvent.EventLinks.target sorties (fqn correspond à la concaténation des espaces de noms et des noms)
LineageEvent.startTime eventTime
LineageEvent.endTime eventTime
requestId Définie par la méthode utilisateur

Importer un événement OpenLineage

Si vous n'avez pas encore configuré OpenLineage, consultez la page Premiers pas.

Pour importer un événement OpenLineage dans Dataplex, appelez la méthode de l'API REST ProcessOpenLineageRunEvent:

POST https://datalineage.googleapis.com/v1/projects/{project}/locations/{location}:processOpenLineageRunEvent \
--data '{"eventTime":"2023-04-04T13:21:16.098Z","eventType":"COMPLETE","inputs":[{"name":"somename","namespace":"somenamespace"}],"job":{"name":"somename","namespace":"somenamespace"},"outputs":[{"name":"somename","namespace":"somenamespace"}],"producer":"someproducer","run":{"runId":"somerunid"},"schemaURL":"https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"}'

Analyser des informations provenant d'OpenLineage

Pour analyser les événements OpenLineage importés, consultez Afficher les graphiques de traçabilité dans l'interface utilisateur de Dataplex.

Données stockées

L'API Data Lineage ne stocke pas toutes les données d'attribut des messages OpenLineage. L'API Data Lineage stocke les champs d'attribut suivants:

  • spark_version
    • openlineage-spark-version
    • spark-version
  • tous les spark.logicalPlan.*
  • environment-properties (attribut de traçabilité Google Cloud personnalisé)
    • origin.sourcetype et origin.name
    • spark.app.id
    • spark.app.name
    • spark.batch.id
    • spark.batch.uuid
    • spark.cluster.name
    • spark.cluster.region
    • spark.job.id
    • spark.job.uuid
    • spark.project.id
    • spark.query.node.name
    • spark.session.id
    • spark.session.uuid

L'API Data Lineage stocke les informations suivantes:

  • eventTime
  • run.runId
  • job.namespace
  • job.name