En este documento, se explica cómo integrar OpenLineage con Knowledge Catalog (antes Dataplex Universal Catalog) para importar y visualizar el linaje de datos de sistemas externos. Al actuar como consumidor de OpenLineage con la API de REST de ProcessOpenLineageRunEvent, Knowledge Catalog te permite unificar el linaje de canalizaciones personalizadas junto con el linaje integrado de los servicios de Google Cloud .
Descripción general
OpenLineage es una plataforma abierta para recopilar y analizar información sobre el linaje de datos. OpenLineage, que usa un estándar abierto para los datos de linaje, captura eventos de linaje de los componentes de la 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 mostrarlos en la interfaz web de Knowledge Catalog junto con la información de linaje de los servicios deGoogle Cloud , 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 de la ProcessOpenLineageRunEvent API de REST y asigna facetas de OpenLineage a atributos de la API de Data Lineage.
Limitaciones de la integración de OpenLineage
Versiones compatibles: La API de Data Lineage admite la versión principal 1 de OpenLineage.
Acciones de la API: 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 Knowledge Catalog. Algunos Google Cloud servicios, como Managed Service para Apache Spark y Managed Airflow, incluyen productores integrados de OpenLineage que pueden enviar eventos a este extremo, lo que automatiza la captura del linaje de esos servicios.Funciones no compatibles: La API de Data Lineage no admite lo siguiente:
- Cualquier versión posterior de OpenLineage con cambios en el formato de los mensajes
DatasetEventJobEvent
Tamaño del mensaje: El tamaño máximo de un solo mensaje es de 5 MB.
Longitud del nombre: La longitud de cada nombre completo en las entradas y salidas se limita a 4,000 caracteres.
Límites de vínculos: Los vínculos se agrupan por eventos, con un máximo de 100 vínculos por evento. La cantidad máxima agregada de vínculos a nivel de la tabla es de 1,000. Si un mensaje contiene más de 1,500 vínculos a nivel de la columna, se omite la información a nivel de la columna.
Alcance del gráfico: Knowledge 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 atributos de facetas 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 la guía de introducción.
Para importar un evento de OpenLineage a Knowledge Catalog, llama al método de la API ProcessOpenLineageRunEvent.
C#
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración para C# que encontrarás en la guía de inicio rápido de Data Lineage sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage C#.
Para autenticarte en Data Lineage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go que encontrarás en la guía de inicio rápido de Data Lineage sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage Go.
Para autenticarte en Data Lineage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que encontrarás en la guía de inicio rápido de Data Lineage sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage Java.
Para autenticarte en Data Lineage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python que encontrarás en la guía de inicio rápido de Data Lineage sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage Python.
Para autenticarte en Data Lineage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby que encontrarás en la guía de inicio rápido de Data Lineage sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Lineage Ruby.
Para autenticarte en Data Lineage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
Para importar un evento de OpenLineage, usa el método processOpenLineageRunEvent.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID: Es el ID del proyecto de Google Cloud .LOCATION_ID: La ubicación Google Cloud , comous-central1.
Método HTTP y URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:processOpenLineageRunEvent
Cuerpo JSON de la solicitud:
{
"eventTime": "2023-04-04T13:21:16.098Z",
"eventType": "COMPLETE",
"inputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"job": {
"name": "somename",
"namespace": "customnamespace"
},
"outputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"producer": "someproducer",
"run": {
"runId": "somerunid"
},
"schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"process": "projects/my-project/locations/us-central1/processes/my-process",
"run": "projects/my-project/locations/us-central1/processes/my-process/runs/my-run",
"lineageEvents": [
"projects/my-project/locations/us-central1/processes/my-process/runs/my-run/lineageEvents/my-lineage-event"
]
}
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:
- Bibliotecas cliente de Google Cloud para Data Lineage: Google proporciona bibliotecas cliente para interactuar con la API de Data Lineage de forma programática. Si deseas obtener instrucciones de instalación, consulta Bibliotecas cliente.
- 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 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 de facetas de OpenLineage 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
¿Qué sigue?
- Obtén más información sobre la integración del linaje de datos con Managed Service para Apache Spark y la integración del linaje de datos de 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)