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
DatasetEvent
JobEvent
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_version
openlineage-spark-version
spark-version
- todos os
spark.logicalPlan.*
environment-properties
(custom Google Cloud lineage facet)origin.sourcetype
eorigin.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
A API Data Lineage armazena as seguintes informações:
eventTime
run.runId
job.namespace
job.name