Faça a integração com o OpenLineage

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 e origin.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