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
ProcessOpenLineageRunEvent
método da API REST e mapeie as facetas OpenLineage para os atributos da API Data Lineage.
Limitações
A API Data Lineage suporta a versão principal 1 do OpenLineage.
O ponto final da API Data Lineage
ProcessOpenLineageRunEventatua apenas como um consumidor de mensagens OpenLineage e não como um produtor. A API permite-lhe enviar informações de linhagem geradas por qualquer ferramenta ou sistema compatível com OpenLineage para o catálogo universal do Dataplex. Alguns Google Cloud serviços, como o Dataproc e o Cloud Composer, incluem produtores OpenLineage incorporados que podem enviar eventos para este ponto final, automatizando a captura de linhagem desses serviços.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 links é 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 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 catálogo universal do Dataplex, 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"}'
Ferramentas para enviar mensagens OpenLineage
Para simplificar o envio de eventos para a API Data Lineage, pode usar várias ferramentas e bibliotecas:
- Biblioteca do produtor Java do Google Cloud: a Google fornece uma biblioteca Java de código aberto para ajudar a criar e enviar eventos OpenLineage para a API Data Lineage. Para mais informações, consulte a publicação no blogue A biblioteca Java do produtor para a linhagem de dados é agora de código aberto. A biblioteca está disponível no GitHub e no Maven.
- Transporte do GCP do OpenLineage: para produtores do OpenLineage baseados em Java, está disponível um transporte do GcpLineage dedicado. Simplifica a integração com a API Data Lineage, minimizando o código necessário para enviar eventos para a API Data Lineage. O
GcpLineageTransportpode ser configurado como o destino de eventos para qualquer produtor do OpenLineage existente, como o Airflow, o Spark e o Flink. Para mais informações e exemplos, consulte GcpLineage.
Analise informações do OpenLineage
Para analisar os eventos do 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
O que se segue?
- Consulte as integrações do Dataproc sem servidor e do Dataproc Hive.
- Experimente num laboratório interativo: Capture e explore atualizações de dados com a linhagem de dados e o OpenLineage