La API de Data Lineage puede transferir información de linaje de sistemas que se integran con OpenLineage, un estándar abierto para la recopilación de linaje.
Cuando envías eventos con formato de OpenLineage a la API de Data Lineage con el método ProcessOpenLineageRunEvent, la API de Data Lineage asigna atributos del mensaje de OpenLineage a atributos correspondientes en la API de Data Lineage.
En este documento, se proporcionan tablas de referencia para estas asignaciones.
Asignación de atributos
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 |
El linaje a nivel de la columna se admite cuando Managed Service para Apache Spark (Managed Service para Apache Spark) lo genera automáticamente, siempre que use la faceta columnLineage dentro de los objetos outputs. Los eventos personalizados de OpenLineage que incluyen esta faceta materializan solo el linaje a nivel de la tabla y no renderizan el linaje a nivel de la columna en la consola de Google Cloud . A continuación, se muestra un ejemplo de la faceta que genera Managed Service para Apache Spark:
"outputs": [ {
"namespace": "bigquery",
"name": "project.dataset.outputtable",
"columnLineage": {
"_producer": "https://github.com/OpenLineage/OpenLineage/tree/1.39.0/integration/spark",
"_schemaURL": "https://openlineage.io/spec/facets/1-2-0/ColumnLineageDatasetFacet.json#/$defs/ColumnLineageDatasetFacet",
"fields": {
"output_field": { // This is the name of the output field
"inputFields": [
{
"namespace": "bigquery",
"name": "project.dataset.inputtable",
"field": "input_field", // This is the name of the input field
"transformations": [
{
"type": "DIRECT",
"subtype": "IDENTITY",
"description": "",
"masking": false
}
]
}
]
}
},
}
}]
En este ejemplo, crearás un vínculo de linaje a nivel de la columna entre input_field y output_field. Debes incluir el campo de transformaciones. Sin él, no se ingerirá el linaje a nivel de la columna. Para obtener más información sobre la definición de Open Lineage para esta faceta, consulta Faceta de conjunto de datos a nivel de columna.
Asignación de FQN
En la siguiente tabla, se proporcionan ejemplos de pares de espacio de nombres y nombre de OpenLineage para varios sistemas, y sus nombres completamente calificados (FQN) equivalentes de Knowledge Catalog (anteriormente, Dataplex Universal Catalog):
| Sistema | Espacio de nombres de OpenLineage | Nombre de OpenLineage | FQN de Knowledge Catalog |
|---|---|---|---|
| Athena | awsathena://athena.{region_name}.amazonaws.com |
|
|
| AWS Glue | arn:aws:glue:{region}:{account id} |
table/{database name}/{table name} |
aws_glue:table:{region}.{account id}.{database name}.{table name} |
| Azure Cosmos DB | azurecosmos://{host}/dbs/{database} |
colls/{table} |
|
| Azure Data Explorer | azurekusto://{host}.kusto.windows.net |
{database}/{table} |
|
| Azure Synapse | sqlserver://{host}:{port} |
|
No compatible |
| BigQuery | bigquery |
|
|
| Cassandra | cassandra://{host}:{port} |
|
|
| MySQL | mysql://{host}:{port} |
|
|
| CrateDB | crate://{host}:{port} |
{database}.{schema}.{table} |
No compatible |
| DB2 | db2://{host}:{port} |
|
|
| Hive | hive://{host}:{port} |
{database}.{table} |
No compatible |
| MSSQL | mssql://{host}:{port} |
{database}.{schema}.{table} |
No compatible |
| OceanBase | oceanbase://{host}:{port} |
{database}.{table} |
No compatible |
| Oracle | oracle://{host}:{port} |
{serviceName}.{schema}.{table} or {sid}.{schema}.{table} |
|
| Postgres | postgres://{host}:{port} |
|
|
| Teradata | teradata://{host}:{port} |
{database}.{table} |
No compatible |
| Redshift | redshift://{cluster_identifier}.{region_name}:{port} |
|
|
| Snowflake | snowflake://{organization name}-{account name} or snowflake://{account-locator}(.{compliance})(.{cloud_region_id})(.{cloud}) |
|
|
| Spanner | spanner://{projectId}:{instanceId} |
{database}.{schema}.{table} |
Se admite en Knowledge Catalog, pero no en el linaje de datos |
| Trino | trino://{host}:{port} |
|
|
| ABFSS (Azure Data Lake Gen2) | abfss://{container name}@{service name}.dfs.core.windows.net |
{path} |
|
| DBFS (Databricks File System) | dbfs://{workspace name} |
{path} |
|
| Cloud Storage | gs://{bucket name} |
{object key} |
|
| HDFS | hdfs://{namenode host}:{namenode port} |
{path} |
|
| Kafka | kafka://{bootstrap server host}:{port} |
{topic} |
kafka:{serverHostWithPort}.{topicId} |
| Sistema de archivos local | file |
{path} |
filesystem:localhost.{path} |
| Sistema de archivos remoto | file://{host} |
{path} |
filesystem:{hostWithPort}.{path} |
| S3 | s3://{bucket name} |
{object key} |
También se aceptan los prefijos de espacio de nombres s3a y s3n, y se convierten en s3. |
| WASBS (Azure Blob Storage) | wasbs://{container name}@{service name}.dfs.core.windows.net |
{object key} |
|
| Tema de Pub/Sub | pubsub |
topic:{projectId}:{topicId} |
pubsub:topic:{projectId}.{topicId} |
| Suscripción a Pub/Sub | pubsub |
subscription:{projectId}:{subscriptionId} |
pubsub:subscription:{projectId}.{subscriptionId} |
Formatos adicionales aceptados
Si bien OpenLineage no define pares namespace/name estándar para los siguientes sistemas, la API de Data Lineage acepta eventos de linaje para ellos cuando se formatean como se describe en la siguiente tabla. Los recursos a los que se hace referencia en los mensajes de OpenLineage con el espacio de nombres custom se interpretan como nombres personalizados completamente calificados.
| Sistema | Espacio de nombres de OpenLineage | Nombre de OpenLineage | FQN de Knowledge Catalog |
|---|---|---|---|
| FQDN personalizado | custom |
{some reference} |
custom:{someReference} |
| Dataproc Metastore | dataproc_metastore |
|
|
¿Qué sigue?
- Obtén más información para integrar OpenLineage.
- Consulta la referencia de nombres completamente calificados.
- Explora la API de Data Lineage.
- Obtén más información para ver la información del linaje.