O OpenLineage é uma plataforma aberta para recolher e analisar informações de linhagem de dados. Usando uma norma aberta para dados de linhagem, o OpenLineage capta eventos de linhagem de componentes de pipeline de dados que usam uma API OpenLineage para criar relatórios sobre execuções, tarefas e conjuntos de dados.
Através da API Data Lineage, pode importar eventos OpenLineage para apresentação na interface Web do catálogo universal do Dataplex juntamente com informações de linhagem deGoogle Cloud serviços, como o BigQuery, o Cloud Composer, o Cloud Data Fusion e o Dataproc.
Para importar eventos OpenLineage que usam a
especificação OpenLineage,
use o método da API REST ProcessOpenLineageRunEvent
e mapeie as facetas OpenLineage para os atributos da API Data Lineage.
Limitações
A API Data Lineage suporta as versões principais 1 e 2 do OpenLineage.
A API Data Lineage não suporta o seguinte:
- Qualquer versão subsequente do OpenLineage com alterações ao formato das mensagens
DatasetEventJobEvent
O tamanho máximo de uma única mensagem é de 5 MB.
O comprimento de cada nome totalmente qualificado nas entradas e saídas está limitado a 4000 carateres.
Os links são agrupados por eventos com 100 links. O número máximo agregado de associações é 1000.
O catálogo universal do Dataplex apresenta um gráfico de linhagem para cada execução de tarefa, mostrando as entradas e as saídas de eventos de linhagem. Não suporta processos de nível inferior, como as fases do Spark.
Mapeamento do OpenLineage
O método da API REST ProcessOpenLineageRunEvent
mapeia os atributos do OpenLineage aos atributos da API Data Lineage da seguinte forma:
| Atributos da API Data Lineage | Atributos 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 do espaço de nomes e do nome) |
| LineageEvent.EventLinks.target | outputs (fqn é a concatenação do espaço de nomes e do nome) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | Definido pelo utilizador do método |
Importe um evento OpenLineage
Se ainda não configurou o OpenLineage, consulte o artigo Introdução.
Para importar um evento OpenLineage para o Dataplex Universal Catalog, chame o método da 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"}'
Analise informações do OpenLineage
Para analisar os eventos OpenLineage importados, consulte o artigo Veja gráficos de linhagem na IU do catálogo universal do Dataplex.
Dados armazenados
A API Data Lineage não armazena todos os dados de facetas das mensagens OpenLineage. A API Data Lineage armazena os seguintes campos de facetas:
spark_versionopenlineage-spark-versionspark-version
- todos os
spark.logicalPlan.* environment-properties(custom Google Cloud lineage facet)origin.sourcetypeeorigin.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
A API Data Lineage armazena as seguintes informações:
eventTimerun.runIdjob.namespacejob.name