Integración con OpenLineage

OpenLineage es una plataforma abierta para recopilar y analizar información del linaje de datos. Con un estándar abierto para los datos de linaje, OpenLineage captura eventos de linaje de componentes de canalización de datos que usan una API de OpenLineage con el objetivo de generar informes sobre ejecuciones, trabajos y conjuntos de datos.

A través de la API de Data Lineage, puedes importar eventos de OpenLineage para mostrar en la IU de Dataplex junto con la información de linaje de los servicios de Google Cloud, como BigQuery, Cloud Composer, Cloud Data Fusion y Dataproc.

Para importar eventos de OpenLineage que usan la especificación de OpenLineage, usa el método de la API de REST ProcessOpenLineageRunEvent y asigna las facetas de OpenLineage a los atributos de la API de Data Lineage.

Limitaciones

  • La API de Data Lineage es compatible con las versiones principales 1 y 2 de OpenLineage.

  • La API de Data Lineage no admite lo siguiente:

    • Cualquier versión posterior de OpenLineage con cambios en el formato del mensaje
    • DatasetEvent
    • JobEvent
  • El tamaño máximo de un solo mensaje es de 5 MB.

  • El largo de cada nombre completamente calificado en las entradas y salidas se limita a 4,000 caracteres.

  • Los vínculos se agrupan por eventos con 100 vínculos. La cantidad máxima agregada de vínculos es 1,000.

  • Dataplex muestra un gráfico de linaje para cada ejecución de trabajo, en el que se indican las entradas y salidas de los eventos de linaje. No admite procesos de nivel inferior, como las etapas de Spark.

Asignación de OpenLineage

El método ProcessOpenLineageRunEvent de la API de REST asigna los atributos de OpenLineage a los atributos de la API de Data Lineage de la siguiente manera:

Atributos de la API de Data Lineage Atributos de OpenLineage
Process.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME
Proceso.displayName Job.namespace + ":" + Job.name
Process.Attributes Job.facets (consulta Datos almacenados)
Ejecuta.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID
Run.displayName Run.runId
Ejecutar.attribute Run.facets (consulta Datos almacenados)
Ejecución.startTime eventTime
Ejecución.endTime eventTime
Ejecutar.state 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 (p.ej., projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333)
LineageEvent.EventLinks.source entradas (fqn es la concatenación de nombres y espacio de nombres)
LineageEvent.EventLinks.target resultados (fqn es la concatenación de nombres y espacio de nombres)
LineageEvent.startTime eventTime
LineageEvent.endTime eventTime
requestId Definido por el usuario del método

Cómo importar un evento de OpenLineage

Si aún no configuraste OpenLineage, consulta Cómo comenzar.

Para importar un evento de OpenLineage a Dataplex, llama al método de la API de 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"}'

Analiza información de OpenLineage

Para analizar los eventos importados de OpenLineage, consulta Visualiza los gráficos de linaje en la IU de Dataplex.

Datos almacenados

La API de Data Lineage no almacena todos los datos de facetas de los mensajes de OpenLineage. La API de Data Lineage almacena los siguientes campos de faceta:

  • spark_version
    • openlineage-spark-version
    • spark-version
  • todos los spark.logicalPlan.*
  • environment-properties (faceta de linaje personalizada de Google Cloud)
    • origin.sourcetype y 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

La API de Data Lineage almacena la siguiente información:

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