Integrar com o OpenLineage

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 do pipeline de dados que usam uma API OpenLineage para informar 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 Dataplex, junto com as informações de linhagem dos serviços do Google 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 ProcessOpenLineageRunEvent da API REST e mapeie as facetas do OpenLineage para atributos da API de linhagem de dados.

Limitações

  • A API Data Lineage é compatível com as versões principais 1 e 2 do OpenLineage.

  • A API Data Lineage não oferece suporte para o seguinte:

    • Qualquer versão subsequente do OpenLineage com mudanças no formato da mensagem
    • DatasetEvent
    • JobEvent
  • 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.

  • Os links são agrupados por eventos com 100 links. O número máximo agregado de links é 1.000.

  • O Dataplex mostra um gráfico de linhagem para cada execução de job, mostrando as entradas e saídas de 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 de linhagem de dados da seguinte maneira:

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 nome e namespace)
LineageEvent.EventLinks.target saídas (fqn é a concatenação de nome e namespace)
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 Primeiros passos.

Para importar um evento do OpenLineage para o Dataplex, chame o método ProcessOpenLineageRunEvent da API REST:

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"}'

Analisar informações do OpenLineage

Para analisar os eventos do OpenLineage importados, consulte Conferir gráficos de linhagem na interface do Dataplex.

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_version
    • openlineage-spark-version
    • spark-version
  • todos spark.logicalPlan.*
  • environment-properties (fator de linhagem personalizada do Google Cloud)
    • 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