Integrar com 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 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 do Dataplex junto às 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 OpenLineage, use o método da API REST ProcessOpenLineageRunEvent e mapeie os atributos do OpenLineage para os atributos da API Data Lineage.

Limitações

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

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

    • Qualquer versão subsequente do OpenLineage com mudanças no formato das mensagens
    • DatasetEvent
    • JobEvent
  • O tamanho máximo de uma mensagem é de 5 MB.

  • O tamanho de cada nome totalmente qualificado nas 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 dos eventos de linhagem. Ele não é compatível com processos de nível inferior, como os estágios 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 maneira:

Atributos da API Data Lineage Atributos do OpenLineage
Processo.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME
Processo.displayName Job.namespace + ":" + Job.name
Processo.attributes Job.facets (consulte Dados armazenados)
Executar.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)
Executar.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 é namespace e concatenação de nomes)
LineageEvent.EventLinks.target saídas (fqn é namespace e concatenação de nomes)
LineageEvent.startTime eventTime
LineageEvent.endTime eventTime
requestId Definido pelo método user.

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

Analisar informações do OpenLineage

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

Dados armazenados

A API Data Lineage não armazena todos os dados de atributos das mensagens do OpenLineage. A API Data Lineage armazena os seguintes campos de atributos:

  • spark_version
    • openlineage-spark-version
    • spark-version
  • todos os spark.logicalPlan.*
  • environment-properties (atributo de linhagem personalizado 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