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
eorigin.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