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