A API Data Lineage pode ingerir informações de linhagem de sistemas que se integram ao
OpenLineage, um padrão aberto para coleta de linhagem.
Quando você envia eventos formatados do OpenLineage para a API Data Lineage usando o
ProcessOpenLineageRunEvent
método, a API Data Lineage mapeia atributos da mensagem do OpenLineage para
atributos correspondentes na API Data Lineage.
Este documento fornece tabelas de referência para esses mapeamentos.
Mapeamento de atributos
O método ProcessOpenLineageRunEvent
da API REST mapeia atributos do OpenLineage para atributos da API Data Lineage da
seguinte maneira:
| Atributos da API Data Lineage | Atributos do OpenLineage |
|---|---|
| Process.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME |
| Process.displayName | Job.namespace + ":" + Job.name |
| Process.attributes | Job.facets (consulte Dados armazenados) |
| 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 (consulte Dados armazenados) |
| 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 exemplo, projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333) |
| LineageEvent.EventLinks.source | inputs (fqn é a concatenação de namespace e nome) |
| LineageEvent.EventLinks.target | outputs (fqn é a concatenação de namespace e nome) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | Definido pelo usuário do método |
A linhagem de colunas gerada pelo Serviço Gerenciado para Apache Spark também é aceita, desde que use a faceta columnLineage nos objetos outputs. Confira um exemplo:
"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
}
]
}
]
}
},
}
}]
Neste exemplo, você cria um link de linhagem de colunas entre input_field e output_field. É necessário incluir o campo de transformações. Sem ele, a linhagem de colunas não será ingerida. Para mais informações sobre a definição do OpenLineage para essa faceta, consulte Faceta de conjunto de dados no nível da coluna.
Mapeamento de FQN
A tabela a seguir fornece exemplos de pares de namespace e nome do OpenLineage para vários sistemas e os nomes totalmente qualificados (FQN) equivalentes do Knowledge Catalog (antigo Dataplex Universal Catalog):
| Sistema | Namespace do OpenLineage | Nome do OpenLineage | FQN do 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} |
|
Indisponível |
| BigQuery | bigquery |
|
|
| Cassandra | cassandra://{host}:{port} |
|
|
| MySQL | mysql://{host}:{port} |
|
|
| CrateDB | crate://{host}:{port} |
{database}.{schema}.{table} |
Indisponível |
| DB2 | db2://{host}:{port} |
|
|
| Hive | hive://{host}:{port} |
{database}.{table} |
Indisponível |
| MSSQL | mssql://{host}:{port} |
{database}.{schema}.{table} |
Indisponível |
| OceanBase | oceanbase://{host}:{port} |
{database}.{table} |
Indisponível |
| Oracle | oracle://{host}:{port} |
{serviceName}.{schema}.{table} or {sid}.{schema}.{table} |
|
| Postgres | postgres://{host}:{port} |
|
|
| Teradata | teradata://{host}:{port} |
{database}.{table} |
Indisponível |
| 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} |
Com suporte no Knowledge Catalog, mas indisponível na linhagem de dados |
| 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 arquivos local | file |
{path} |
filesystem:localhost.{path} |
| Sistema de arquivos remoto | file://{host} |
{path} |
filesystem:{hostWithPort}.{path} |
| S3 | s3://{bucket name} |
{object key} |
Os prefixos de namespace s3a e s3n também são aceitos e convertidos em s3 |
| WASBS (Armazenamento de Blobs do Azure) | wasbs://{container name}@{service name}.dfs.core.windows.net |
{object key} |
|
| Tópico do Pub/Sub | pubsub |
topic:{projectId}:{topicId} |
pubsub:topic:{projectId}.{topicId} |
| Assinatura do Pub/Sub | pubsub |
subscription:{projectId}:{subscriptionId} |
pubsub:subscription:{projectId}.{subscriptionId} |
Outros formatos aceitos
Embora o OpenLineage não defina pares namespace/name padrão para os
sistemas a seguir, a API Data Lineage aceita eventos de linhagem para eles quando
formatados conforme descrito na tabela a seguir. Os recursos referenciados em mensagens do OpenLineage com o namespace custom são interpretados como nomes totalmente qualificados personalizados.
| Sistema | Namespace do OpenLineage | Nome do OpenLineage | FQN do Knowledge Catalog |
|---|---|---|---|
| FQN personalizado | custom |
{some reference} |
custom:{someReference} |
| Metastore do Dataproc | dataproc_metastore |
|
|
A seguir
- Aprenda a fazer a integração com o OpenLineage.
- Consulte a referência para nomes totalmente qualificados.
- Conheça a API Data Lineage.
- Aprenda a visualizar informações de linhagem.