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 Dataplex Universal Catalog junto com informações de linhagem de serviçosGoogle Cloud , como BigQuery, Cloud Composer, Cloud Data Fusion e Dataproc.
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
A API Data Lineage é compatível com a versão principal 1 do OpenLineage.
O endpoint de API Data Lineage
ProcessOpenLineageRunEventatua apenas como um consumidor de mensagens do OpenLineage, não como um produtor. Com a API, é possível enviar informações de linhagem geradas por qualquer ferramenta ou sistema compatível com OpenLineage para o Dataplex Universal Catalog. Alguns serviços do Google Cloud , como o Dataproc e o Cloud Composer, incluem produtores OpenLineage integrados que podem enviar eventos para esse endpoint, automatizando a captura de linhagem desses serviços.A API Data Lineage não é compatível com o seguinte:
- Qualquer versão subsequente do OpenLineage com mudanças no formato da mensagem
DatasetEventJobEvent
O tamanho máximo de uma única mensagem é de 5 MB.
O comprimento de cada nome totalmente qualificado em entradas e saídas é limitado a 4.000 caracteres.
Links são agrupados por eventos com 100 links. O número máximo agregado de links é 1.000.
O Dataplex Universal 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 do OpenLineage
O método da API REST
ProcessOpenLineageRunEvent
mapeia os atributos do OpenLineage para os atributos da API Data Lineage da seguinte forma:
| Atributos da API Data Lineage | Atributos do 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 | entradas (fqn é a concatenação de namespace e nome) |
| LineageEvent.EventLinks.target | saídas (fqn é a concatenação de namespace e nome) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | Definido pelo usuário do método |
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 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"}'
Ferramentas para enviar mensagens do OpenLineage
Para simplificar o envio de eventos à API Data Lineage, use várias ferramentas e bibliotecas:
- 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
transporte GcpLineage
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 Visualizar gráficos de linhagem na interface do Dataplex Universal Catalog.
Dados 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
- Confira as integrações do Dataproc sem servidor e do Dataproc Hive.
- Teste em um laboratório interativo: Capturar e analisar atualizações de dados com linhagem de dados e OpenLineage