OpenLineage è una piattaforma aperta per la raccolta e l'analisi delle informazioni sulla 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 nella UI di Dataplex insieme alle informazioni sulla 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 API REST ProcessOpenLineageRunEvent
e mappa i facet 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 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 sono raggruppati per eventi con 100 link. Il numero massimo aggregato di link è 1000.
Dataplex visualizza un grafico di derivazione per ogni esecuzione di job, che mostra gli input e gli 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 |
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 |
Esegui.displayName | Run.runId |
Esegui.attributes | Run.facets (vedi Dati archiviati) |
Esegui.startTime | eventTime |
Run.endTime | eventTime |
Esegui.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 |
Importa un evento OpenLineage
Se non hai ancora configurato OpenLineage, consulta la guida introduttiva.
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"}'
Analizzare informazioni da OpenLineage
Per analizzare gli eventi OpenLineage importati, vedi 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 facet:
spark_version
openlineage-spark-version
spark-version
- tutti e
spark.logicalPlan.*
environment-properties
(facet di derivazione Google Cloud personalizzata)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
L'API Data Lineage archivia le seguenti informazioni:
eventTime
run.runId
job.namespace
job.name