Eseguire l'integrazione con OpenLineage

OpenLineage è una piattaforma aperta per la raccolta e l'analisi delle informazioni sulla derivazione dei dati. Utilizzando uno standard aperto per i dati sulla provenienza, OpenLineage acquisisce gli eventi sulla provenienza 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 gli eventi OpenLineage da visualizzare nell'UI di Dataplex insieme alle informazioni sulla cronologia dei servizi Google Cloud, come BigQuery, Cloud Composer, Cloud Data Fusion e Dataproc.

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

Limitazioni

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

  • L'API Data Lineage non supporta quanto segue:

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

  • Lunghezza di ogni nome completo in input e output è limitato a 4000 caratteri.

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

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

Mappatura di OpenLineage

Il metodo 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
Process.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
Run.displayName Run.runId
Run.attributes Run.facets (vedi Dati archiviati)
Run.startTime eventTime
Esegui.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 (ad es. projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333)
LineageEvent.EventLinks.source (fqn è la concatenazione dei nomi e dello spazio dei nomi)
LineageEvent.EventLinks.target (fqn è la concatenazione dei nomi e dello spazio dei nomi)
LineageEvent.startTime eventTime
LineageEvent.endTime eventTime
requestId Definito dal metodo utilizzato dall'utente

Importare un evento OpenLineage

Se non hai ancora configurato OpenLineage, consulta Come iniziare.

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

Analizza le informazioni di OpenLineage

Per analizzare gli eventi OpenLineage importati, consulta Visualizzare i grafici della struttura in Dataplex UI.

Dati archiviati

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

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