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 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
(facet de linhagemenvironment-properties
personalizada 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