Integrazione con OpenLineage

OpenLineage è una piattaforma aperta per la raccolta e l'analisi delle informazioni relative alla derivazione dei dati. Utilizzando uno standard aperto per i dati di derivazione, OpenLineage acquisisce gli eventi di derivazione dai componenti della pipeline di dati, che utilizzano un'API OpenLineage per generare report su esecuzioni, job e set di dati.

Tramite l'API Data Lineage puoi importare eventi OpenLineage da visualizzare nell'interfaccia utente di Dataplex insieme alle informazioni di derivazione dai servizi Google Cloud, come BigQuery, Cloud Composer, Cloud Data Fusion e Dataproc.

Per importare eventi OpenLineage che utilizzano la specifica OpenLineage, utilizza il metodo dell'API REST ProcessOpenLineageRunEvent e mappa i facet OpenLineage agli attributi dell'API Data Lineage.

Limitazioni

  • L'API Data Lineage supporta le versioni principali di OpenLineage 1 e 2.

  • L'API Data Lineage non supporta quanto segue:

    • Qualsiasi release di OpenLineage successiva con modifiche al formato dei messaggi
    • DatasetEvent
    • JobEvent
  • La dimensione massima di un singolo messaggio è 5 MB.

  • La lunghezza di ogni nome completo negli input e negli output è limitata a 4000 caratteri.

  • I link vengono raggruppati per eventi con 100 link. Il numero aggregato massimo di link è 1000.

  • Dataplex mostra un grafico di derivazione per ogni esecuzione di job, con input e output degli eventi di derivazione. Non supporta processi di livello inferiore come le fasi di Spark.

Mappatura OpenLineage

Il metodo dell'API REST ProcessOpenLineageRunEvent mappa gli attributi OpenLineage agli attributi dell'API Data Lineage come segue:

Attributi dell'API Data Lineage Attributi OpenLineage
Process.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME
Procedura.displayName Job.namespace + ":" + Job.name
Process.attributes Job.facets (vedi Dati archiviati)
Esegui.name projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID
Esegui.displayName Run.runId
Esegui.attributes Run.facets (vedi Dati archiviati)
Esegui.startTime eventTime
Esecuzione.endTime eventTime
Esegui.state eventType
Nome evento LineageEvent projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID/lineageEvents/HASH_OF_JOB_RUN_INPUT_OUTPUTS_OF_EVENT (ad es. projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333)
LineageEvent.EventLinks.source input (fqn è lo spazio dei nomi e la concatenazione dei nomi)
LineageEvent.EventLinks.target output (fqn è lo spazio dei nomi e la concatenazione dei nomi)
LineageEvent.startTime eventTime
LineageEvent.endTime eventTime
requestId Definito dall'utente del metodo

Importa un evento OpenLineage

Se non hai ancora configurato OpenLineage, consulta la guida introduttiva.

Per importare un evento OpenLineage in Dataplex, chiama il metodo dell'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"}'

Analizzare le informazioni di OpenLineage

Per analizzare gli eventi OpenLineage importati, consulta Visualizzare i grafici di derivazione nella UI di Dataplex.

Dati archiviati

L'API Data Lineage non archivia tutti i dati dei facet dei messaggi OpenLineage. L'API Data Lineage archivia i seguenti campi dei facet:

  • spark_version
    • openlineage-spark-version
    • spark-version
  • tutti gli spark.logicalPlan.*
  • environment-properties (facet di derivazione di Google Cloud personalizzato)
    • 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

L'API Data Lineage archivia le seguenti informazioni:

  • eventTime
  • run.runId
  • job.namespace
  • job.name