Neste documento, explicamos 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 do 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 exibição 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 as facetas do OpenLineage para os atributos da API Data Lineage.
Limitações da integração do OpenLineage
Versões compatíveis:a API Data Lineage é compatível com as versões principais 1 e 2 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. A API permite enviar 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 do OpenLineage integrados que podem enviar eventos para esse endpoint, automatizando a captura de linhagem desses serviços.Recursos não compatíveis:a API Data Lineage não é compatível com o seguinte:
- Qualquer versão subsequente do OpenLineage com mudanças no formato de 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 nas entradas e saídas é limitado a 4.000 caracteres.
Linhagem no nível da coluna:o endpoint
ProcessOpenLineageRunEventmaterializa as bordas de linhagem no nível da tabela apenas para eventos personalizados do OpenLineage. Os gráficos de linhagem no nível da coluna são gerados apenas para transformações SQL do BigQuery e jobs do Serviço Gerenciado para Apache Spark. As facetas personalizadas no nível da coluna não são renderizadas no console.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. Para mecanismos automatizados compatíveis que coletam linhagem no nível da coluna, se uma mensagem tiver mais de 1.500 links no nível da coluna, as informações no nível da coluna serão ignoradas.
Escopo do gráfico:o Knowledge Catalog exibe 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 as 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 Primeiros passos.
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 da linhagem de dados: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage C#.
Para autenticar na linhagem de dados, 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 da linhagem de dados: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Go.
Para autenticar na linhagem de dados, 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 da linhagem de dados: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Java.
Para autenticar na linhagem de dados, 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 da linhagem de dados: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Python.
Para autenticar na Linhagem de dados, 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 da linhagem de dados: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Data Lineage Ruby.
Para autenticar na linhagem de dados, 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 do 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 para a API Data Lineage, use várias ferramentas e bibliotecas:
- Bibliotecas de cliente do Google Cloud para linhagem de dados:o Google fornece 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 do produtor Java do Google Cloud:o Google fornece uma biblioteca Java de código aberto para ajudar a criar e enviar eventos do OpenLineage para a 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 GCP do OpenLineage:para produtores do OpenLineage baseados em Java, um
transporte do GcpLineage
dedicado
está disponível. Ele simplifica a integração com a API Data Lineage, minimizando o código necessário para enviar eventos à API Data Lineage. O
GcpLineageTransportpode ser configurado como o coletor de eventos para qualquer produtor do OpenLineage, 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 Google Cloud personalizado)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