Integración con OpenLineage

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

Con la API Data Lineage, puedes importar eventos de OpenLineage para que se muestren en la interfaz web de Dataplex Universal Catalog junto con la información de linaje deGoogle Cloud servicios, como BigQuery, Cloud Composer, Cloud Data Fusion y Dataproc.

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

Limitaciones

  • La API Data Lineage admite las versiones principales 1 y 2 de OpenLineage.

  • La API Data Lineage no admite lo siguiente:

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

  • La longitud de cada nombre completo de las entradas y salidas está limitada a 4000 caracteres.

  • Los enlaces se agrupan por eventos con 100 enlaces. El número máximo agregado de enlaces es 1000.

  • Dataplex Universal Catalog muestra un gráfico de linaje de cada ejecución de trabajo, que muestra las entradas y salidas de los eventos de linaje. No admite procesos de nivel inferior, como las fases de Spark.

Asignación de OpenLineage

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

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

Importar un evento de OpenLineage

Si aún no has configurado OpenLineage, consulta la sección Empezar.

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

Analizar información de OpenLineage

Para analizar los eventos de OpenLineage importados, consulta Ver gráficos de linaje en la interfaz de usuario de Dataplex Universal Catalog.

Datos almacenados

La API Data Lineage no almacena todos los datos de las facetas de los mensajes de OpenLineage. La API 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)
      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 Data Lineage almacena la siguiente información:

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