OpenLineage es una plataforma abierta para recopilar y analizar información sobre el linaje de los datos. OpenLineage usa un estándar abierto para los datos de linaje y captura eventos de linaje de los componentes de la canalización de datos que usan una API de OpenLineage para generar informes sobre ejecuciones, trabajos y conjuntos de datos.
A través de la API de Data Lineage, puedes importar eventos de OpenLineage para mostrarlos en la interfaz web de Dataplex Universal Catalog junto con la información de linaje de los servicios deGoogle 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 facetas de OpenLineage a atributos de la API de Data Lineage.
Limitaciones
La API de Data Lineage admite la versión principal 1 de OpenLineage.
El extremo de API de Data Lineage
ProcessOpenLineageRunEventsolo actúa como consumidor de mensajes de OpenLineage, no como productor. La API te permite enviar información de linaje generada por cualquier herramienta o sistema compatible con OpenLineage a Dataplex Universal Catalog. Algunos Google Cloud servicios, como Dataproc y Cloud Composer, incluyen productores integrados de OpenLineage que pueden enviar eventos a este extremo, lo que automatiza la captura del linaje de esos servicios.La API de Data Lineage no admite lo siguiente:
- Cualquier versión posterior de OpenLineage con cambios en el formato de los mensajes
DatasetEventJobEvent
El tamaño máximo de un solo mensaje es de 5 MB.
La longitud 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 Universal Catalog muestra un gráfico de linaje para cada ejecución de trabajo, en el que se muestran 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 de la API de REST ProcessOpenLineageRunEvent 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 |
| 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 | Entradas (fqn es la concatenación del espacio de nombres y el nombre) |
| LineageEvent.EventLinks.target | Salidas (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 |
Cómo importar un evento de OpenLineage
Si aún no configuraste OpenLineage, consulta la guía de introducción.
Para importar un evento de OpenLineage a Dataplex Universal Catalog, 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"}'
Herramientas para enviar mensajes de OpenLineage
Para simplificar el envío de eventos a la API de Data Lineage, puedes usar varias herramientas y bibliotecas:
- Biblioteca de Java Producer de Google Cloud: Google proporciona una biblioteca de Java de código abierto para ayudar a construir y enviar eventos de OpenLineage a la API de Data Lineage. Para obtener más información, consulta la entrada de blog La biblioteca de Java del productor para Data Lineage ahora es de código abierto. La biblioteca está disponible en GitHub y Maven.
- Transporte de OpenLineage para GCP: Para los productores de OpenLineage basados en Java, hay disponible un transporte de GcpLineage específico. Simplifica la integración con la API de Data Lineage, ya que minimiza el código necesario para enviar eventos a la API de Data Lineage. El
GcpLineageTransportse puede configurar como el receptor de eventos para cualquier productor de OpenLineage existente, como Airflow, Spark y Flink. Para obtener más información y ejemplos, consulta GcpLineage.
Analiza la información de OpenLineage
Para analizar los eventos de OpenLineage importados, consulta Cómo ver gráficos de linaje en la IU de Dataplex Universal Catalog.
Datos almacenados
La API de Data Lineage no almacena todos los datos de las facetas de los mensajes de OpenLineage. La API de Data Lineage almacena los siguientes campos de facetas:
spark_versionopenlineage-spark-versionspark-version
- todos los
spark.logicalPlan.* environment-properties(faceta de linaje Google Cloud personalizada)origin.sourcetypeyorigin.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
La API de Data Lineage almacena la siguiente información:
eventTimerun.runIdjob.namespacejob.name
Próximos pasos
- Consulta las integraciones de Dataproc Serverless y Dataproc Hive.
- Pruébalo en un lab interactivo: Capture and Explore Data Updates With Data Lineage and OpenLineage (Captura y explora actualizaciones de datos con linaje de datos y OpenLineage)