En este documento, se explica cómo integrar OpenLineage con Knowledge Catalog (anteriormente Dataplex Universal Catalog) para visualizar datos de linaje de varios sistemas.
Descripción general
OpenLineage es una plataforma abierta para recopilar y analizar información de 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 para informar sobre ejecuciones, trabajos y conjuntos de datos.
A través de la API de Data Lineage, puedes importar eventos de OpenLineage para que se muestren en la interfaz web de Knowledge Catalog junto con la información de linaje de Google Cloud servicios como BigQuery, Managed Service para Apache Airflow, Cloud Data Fusion y Managed Service para Apache Spark.
Para importar eventos de OpenLineage que usan la
especificación de OpenLineage,
usa el método
ProcessOpenLineageRunEvent
de la API de REST 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
ProcessOpenLineageRunEventde Data Lineage solo actúa como un 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 Knowledge Catalog. Algunos Google Cloud servicios, como Managed Service para Apache Spark y Managed Service para Apache Airflow, incluyen **productores**de OpenLineage integrados que pueden enviar eventos a este extremo, lo que automatiza la captura de linaje de esos servicios.La API de Data Lineage no admite lo siguiente:
- Cualquier versión posterior de OpenLineage con cambios en el formato del mensaje
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 está limitada a 4,000 caracteres.
Los vínculos se agrupan por eventos con 100 vínculos. La cantidad agregada máxima de vínculos es de 1,000.
Knowledge Catalog muestra un gráfico de linaje para cada ejecución de trabajo, que muestra las entradas y salidas de los eventos de linaje. No admite procesos de nivel inferior, como las etapas de Spark.
Asignación de OpenLineage
Para obtener información sobre la asignación de OpenLineage, consulta Asignación de OpenLineage.
Importa un evento de OpenLineage
Si aún no configuraste OpenLineage, consulta Introducción.
Para importar un evento de OpenLineage a Knowledge 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 productor de Java 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 productor de Java para Data Lineage ahora es de código abierto. La biblioteca está disponible en GitHub y Maven.
- Transporte de OpenLineage GCP: Para los productores de OpenLineage basados en Java, está disponible un
transporte de
GcpLineage
dedicado. 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 Knowledge Catalog.
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 facetas:
spark_versionopenlineage-spark-versionspark-version
- todos los
spark.logicalPlan.* environment-properties(faceta de custom Google Cloud lineage)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
¿Qué sigue?
- Consulta las integraciones de Managed Service para Apache Spark Serverless y Managed Service para Apache Spark Hive.
- Pruébalo en un lab interactivo: Captura y explora actualizaciones de datos con Data Lineage y OpenLineage