OpenLineage es una plataforma abierta para recopilar y analizar información de linaje de datos. Mediante 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 IU de Dataplex junto con la información del linaje de los servicios de Google 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 las facetas de OpenLineage a los atributos de la API de Data Lineage.
Limitaciones
La API de Data Lineage es compatible con las versiones principales 1 y 2 de OpenLineage.
La API de Data Lineage no admite lo siguiente:
- Cualquier versión posterior de OpenLineage con cambios de formato de los mensajes
DatasetEvent
JobEvent
El tamaño máximo de un 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 total máxima de vínculos es 1,000.
Dataplex muestra un gráfico de linaje por cada ejecución de trabajo y las entradas y salidas de los eventos de linaje. No es compatible con procesos de nivel inferior, como las etapas de Spark.
Asignación de OpenLineage
El método ProcessOpenLineageRunEvent
de la API de REST 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) |
Ejecutar.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) |
Ejecutar.startTime | eventTime |
Ejecutar.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 (p.ej., projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333) |
LineageEvent.EventLinks.source | entradas (fqn es la concatenación de nombres y espacios de nombres) |
LineageEvent.EventLinks.target. | resultados (fqn es la concatenación de nombres y espacios de nombres) |
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 Cómo comenzar.
Para importar un evento de OpenLineage a Dataplex, llama al método ProcessOpenLineageRunEvent
de la API de REST:
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"}'
Analiza información de OpenLineage
Para analizar los eventos importados de OpenLineage, consulta Ver gráficos de linaje en la IU de Dataplex.
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 faceta:
spark_version
openlineage-spark-version
spark-version
- todos los
spark.logicalPlan.*
environment-properties
(faceta de linaje personalizada de Google Cloud)origin.sourcetype
yorigin.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 de Data Lineage almacena la siguiente información:
eventTime
run.runId
job.namespace
job.name