Este documento explica como integrar o OpenLineage ao Knowledge Catalog (antigo Dataplex Universal Catalog) para importar e visualizar a linhagem de dados de sistemas externos. Ao atuar como um consumidor do OpenLineage usando a API REST ProcessOpenLineageRunEvent, o Knowledge Catalog permite unificar a linhagem de pipeline personalizada com a linhagem integrada dos serviços Google Cloud .
Visão geral
O OpenLineage é uma plataforma aberta para coletar e analisar informações de linhagem de dados. Usando um padrão aberto para dados de linhagem, o OpenLineage captura eventos de linhagem de componentes de pipeline de dados que usam uma API OpenLineage para gerar relatórios sobre execuções, jobs e conjuntos de dados.
Com a API Data Lineage, é possível importar eventos do OpenLineage para mostrar na interface da Web do Knowledge Catalog junto com informações de linhagem de serviços doGoogle Cloud , como BigQuery, Serviço Gerenciado para Apache Airflow, Cloud Data Fusion e Serviço Gerenciado para Apache Spark.
Para importar eventos do OpenLineage que usam a
especificação do OpenLineage,
use o método da
API REST
ProcessOpenLineageRunEvent
e mapeie aspectos do OpenLineage para atributos da API Data Lineage.
Limitações da integração do OpenLineage
Versões compatíveis:a API Data Lineage é compatível com a versão principal 1 do OpenLineage.
Ações da API:o endpoint de API Data Lineage
ProcessOpenLineageRunEventatua apenas como um consumidor de mensagens do OpenLineage, não como um produtor. Com a API, você envia informações de linhagem geradas por qualquer ferramenta ou sistema compatível com o OpenLineage para o Knowledge Catalog. Alguns serviços do Google Cloud, como o Serviço Gerenciado para Apache Spark e o Airflow Gerenciado, incluem produtores OpenLineage integrados que podem enviar eventos para esse endpoint, automatizando a captura de linhagem desses serviços. Google CloudRecursos sem suporte:a API Data Lineage não é compatível com o seguinte:
- Qualquer lançamento subsequente do OpenLineage com mudanças no formato da mensagem
DatasetEventJobEvent
Tamanho da mensagem:o tamanho máximo de uma única mensagem é de 5 MB.
Tamanho do nome:o tamanho de cada nome totalmente qualificado em entradas e saídas é limitado a 4.000 caracteres.
Limites de links:os links são agrupados por eventos, com um máximo de 100 links por evento. O número máximo agregado de links no nível da tabela é 1.000. Se uma mensagem tiver mais de 1.500 links no nível da coluna, as informações desse nível serão ignoradas.
Escopo do gráfico:o Knowledge Catalog mostra um gráfico de linhagem para cada execução de job, mostrando as entradas e saídas dos eventos de linhagem. Ele não oferece suporte a processos de nível inferior, como etapas do Spark.
Mapeamento de atributos de faceta do OpenLineage
Para informações sobre o mapeamento do OpenLineage, consulte Mapeamento do OpenLineage.
Importar um evento do OpenLineage
Se você ainda não configurou o OpenLineage, consulte Como começar.
Para importar um evento do OpenLineage para o Knowledge Catalog, chame o método de API
ProcessOpenLineageRunEvent.
C#
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no Guia de início rápido do Data Lineage: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage C#.
Para autenticar no Data Lineage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do Data Lineage: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Go.
Para autenticar no Data Lineage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do Data Lineage: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Java.
Para autenticar no Data Lineage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do Data Lineage: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Python.
Para autenticar no Data Lineage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no Guia de início rápido do Data Lineage: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Ruby.
Para autenticar no Data Lineage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
Para importar um evento do OpenLineage, use o
método processOpenLineageRunEvent.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID: o ID do projeto Google Cloud .LOCATION_ID: o local Google Cloud , comous-central1.
Método HTTP e URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:processOpenLineageRunEvent
Corpo JSON da solicitação:
{
"eventTime": "2023-04-04T13:21:16.098Z",
"eventType": "COMPLETE",
"inputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"job": {
"name": "somename",
"namespace": "customnamespace"
},
"outputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"producer": "someproducer",
"run": {
"runId": "somerunid"
},
"schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"
}
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{
"process": "projects/my-project/locations/us-central1/processes/my-process",
"run": "projects/my-project/locations/us-central1/processes/my-process/runs/my-run",
"lineageEvents": [
"projects/my-project/locations/us-central1/processes/my-process/runs/my-run/lineageEvents/my-lineage-event"
]
}
Ferramentas para enviar mensagens do OpenLineage
Para simplificar o envio de eventos à API Data Lineage, use várias ferramentas e bibliotecas:
- Bibliotecas de cliente do Google Cloud para linhagem de dados:o Google oferece bibliotecas de cliente para interagir com a API Data Lineage de maneira programática. Para instruções de instalação, consulte Bibliotecas de cliente.
- Biblioteca de produtor Java do Google Cloud:o Google oferece uma biblioteca Java de código aberto para ajudar a criar e enviar eventos do OpenLineage à API Data Lineage. Para mais informações, consulte a postagem do blog A biblioteca Java do produtor para linhagem de dados agora é de código aberto. A biblioteca está disponível no GitHub e no Maven.
- Transporte do OpenLineage GCP:para produtores do OpenLineage baseados em Java, um
GcpLineage Transport
dedicado está disponível. Ela simplifica a integração com a API Data Lineage, minimizando o código necessário para enviar eventos a essa API. O
GcpLineageTransportpode ser configurado como o coletor de eventos para qualquer produtor OpenLineage atual, como Airflow, Spark e Flink. Para mais informações e exemplos, consulte GcpLineage.
Analisar informações do OpenLineage
Para analisar os eventos importados do OpenLineage, consulte Ver gráficos de linhagem na interface do Knowledge Catalog.
Dados de faceta do OpenLineage armazenados
A API Data Lineage não armazena todos os dados de facetas das mensagens do OpenLineage. A API Data Lineage armazena os seguintes campos de faceta:
spark_versionopenlineage-spark-versionspark-version
- todos os
spark.logicalPlan.* environment-properties(aspecto de linhagem custom Google Cloud )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
A seguir
- Saiba mais sobre as integrações de linhagem de dados com o Serviço Gerenciado para Apache Spark e linhagem de dados do Hive.
- Teste em um laboratório interativo: Capturar e analisar atualizações de dados com linhagem de dados e OpenLineage