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, registra eventos de linaje de componentes de la canalización de datos que utilizan una API de OpenLineage para informar sobre ejecuciones, trabajos y conjuntos de datos.
A través de la API Data Lineage, puede 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 las facetas de OpenLineage a los atributos de la API Data Lineage.
Limitaciones
La API Data Lineage es compatible con la versión principal 1 de OpenLineage.
El endpoint de la API 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 de OpenLineage integrados que pueden enviar eventos a este endpoint, lo que automatiza la captura del linaje de esos servicios.La API 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 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.
El catálogo universal de Dataplex muestra un gráfico de linaje de cada ejecución de trabajo, con 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 a 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"}'
Herramientas para enviar mensajes de OpenLineage
Para simplificar el envío de eventos a la API 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 crear y enviar eventos de OpenLineage a la API Data Lineage. Para obtener más información, consulta la entrada de blog La biblioteca Java de Producer para Data Lineage ahora es de código abierto. La biblioteca está disponible en GitHub y Maven.
- Transporte de OpenLineage de GCP: para los productores de OpenLineage basados en Java, hay disponible un transporte de GcpLineage
específico. Simplifica la integración con la API Data Lineage, ya que minimiza el código necesario para enviar eventos a la API Data Lineage.
GcpLineageTransportse puede configurar como el receptor de eventos de cualquier productor de OpenLineage, como Airflow, Spark y Flink. Para obtener más información y ejemplos, consulta GcpLineage.
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 facetas de los mensajes de OpenLineage. La API Data Lineage almacena los siguientes campos de faceta:
spark_versionopenlineage-spark-versionspark-version
- todos los
spark.logicalPlan.* environment-properties(faceta de linaje personalizada)- Google Cloud
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 Data Lineage almacena la siguiente información:
eventTimerun.runIdjob.namespacejob.name
Siguientes pasos
- Consulta las integraciones de Dataproc Serverless y Dataproc Hive.
- Pruébalo en un laboratorio interactivo: Captura y explora actualizaciones de datos con linaje de datos y OpenLineage