In diesem Dokument wird erläutert, wie Sie OpenLineage in Knowledge Catalog (ehemals Dataplex Universal Catalog) einbinden, um Datenherkunft aus externen Systemen zu importieren und zu visualisieren. Wenn Sie Knowledge Catalog als OpenLineage-Nutzer
mit der ProcessOpenLineageRunEvent REST API verwenden, können Sie benutzerdefinierte Pipeline
Herkunft neben der integrierten Herkunft von Google Cloud Diensten zusammenführen.
Übersicht
OpenLineage ist eine offene Plattform zum Erfassen und Analysieren von Datenherkunftsinformationen. OpenLineage verwendet einen offenen Standard für Herkunftsdaten und erfasst Herkunftsereignisse aus Datenpipeline-Komponenten, die eine OpenLineage API verwenden, um über Ausführungen, Jobs und Datasets zu berichten.
Mit der Data Lineage API können Sie OpenLineage-Ereignisse importieren, die in der Knowledge Catalog-Weboberfläche neben Herkunftsinformationen aus Google Cloud Diensten wie BigQuery, Managed Service for Apache Airflow, Cloud Data Fusion und Managed Service for Apache Spark angezeigt werden.
Wenn Sie OpenLineage-Ereignisse importieren möchten, die die
OpenLineage-Spezifikation verwenden, verwenden Sie die
ProcessOpenLineageRunEvent
REST API-Methode und ordnen Sie OpenLineage-Facets Data Lineage API-Attributen zu.
Einschränkungen bei der OpenLineage-Einbindung
Unterstützte Versionen:Die Data Lineage API unterstützt OpenLineage-Hauptversion 1.
API-Aktionen: Der Data Lineage API-Endpunkt
ProcessOpenLineageRunEventfungiert nur als Nutzer von OpenLineage-Nachrichten, nicht als Ersteller. Mit der API können Sie Herkunftsinformationen, die von einem beliebigen OpenLineage-kompatiblen Tool oder System generiert wurden, an Knowledge Catalog senden. Einige Google Cloud Dienste wie Managed Service for Apache Spark und Managed Airflow enthalten integrierte OpenLineage-Ersteller, die Ereignisse an diesen Endpunkt senden können, wodurch die Erfassung der Herkunft aus diesen Diensten automatisiert wird.Nicht unterstützte Funktionen:Die Data Lineage API unterstützt Folgendes nicht:
- Alle nachfolgenden OpenLineage-Versionen mit Änderungen am Nachrichtenformat
DatasetEventJobEvent
Nachrichtengröße:Die maximale Größe einer einzelnen Nachricht beträgt 5 MB.
Länge des Namens: Die Länge jedes vollständig qualifizierten Namens in Ein- und Ausgaben ist auf 4.000 Zeichen begrenzt.
Link-Limits:Links werden nach Ereignissen gruppiert, mit maximal 100 Links pro Ereignis. Die maximale Gesamtzahl der Links auf Tabellenebene beträgt 1.000. Wenn eine Nachricht mehr als 1.500 Links auf Spaltenebene enthält, werden die Informationen auf Spaltenebene übersprungen.
Graph-Bereich:Knowledge Catalog zeigt für jede Jobausführung einen Herkunftsgraphen mit den Ein- und Ausgaben von Herkunftsereignissen an. Prozesse auf niedrigerer Ebene wie Spark-Phasen werden nicht unterstützt.
Zuordnung von OpenLineage-Facet-Attributen
Informationen zur OpenLineage-Zuordnung finden Sie unter OpenLineage-Zuordnung.
OpenLineage-Ereignis importieren
Wenn Sie OpenLineage noch nicht eingerichtet haben, lesen Sie den Artikel Erste Schritte.
Rufen Sie die API-Methode
ProcessOpenLineageRunEvent auf, um ein OpenLineage-Ereignis in Knowledge Catalog zu importieren.
C#
C#
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zur Einrichtung von C# in der Data Lineage-Kurzanleitung mit Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Data Lineage C#.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Data Lineage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Go
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zur Einrichtung von Go in der Data Lineage-Kurzanleitung mit Clientbibliotheken. Weitere Informationen finden Sie in der APIGo Referenzdokumentation für Data Lineage.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Data Lineage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Java
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zur Einrichtung von Java in der Data Lineage-Kurzanleitung mit Clientbibliotheken. Weitere Informationen finden Sie in der API-ReferenzdokumentationJava für Data Lineage.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Data Lineage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zur Einrichtung von Python in der Data Lineage-Kurzanleitung mit Clientbibliotheken. Weitere Informationen finden Sie in der API-ReferenzdokumentationPython für Data Lineage.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Data Lineage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Ruby
Ruby
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Anleitung zur Einrichtung von Ruby in der Data Lineage-Kurzanleitung mit Clientbibliotheken. Weitere Informationen finden Sie in der API-ReferenzdokumentationRuby für Data Lineage.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Data Lineage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
REST
Verwenden Sie die
processOpenLineageRunEvent Methode, um ein OpenLineage-Ereignis zu importieren.
Ersetzen Sie folgende Werte in den Anfragedaten:
PROJECT_ID: Ihre Google Cloud Projekt-ID.LOCATION_ID: der Google Cloud Standort, z. B.us-central1.
HTTP-Methode und URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:processOpenLineageRunEvent
JSON-Text der Anfrage:
{
"eventTime": "2023-04-04T13:21:16.098Z",
"eventType": "COMPLETE",
"inputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"job": {
"name": "somename",
"namespace": "customnamespace"
},
"outputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"producer": "someproducer",
"run": {
"runId": "somerunid"
},
"schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"process": "projects/my-project/locations/us-central1/processes/my-process",
"run": "projects/my-project/locations/us-central1/processes/my-process/runs/my-run",
"lineageEvents": [
"projects/my-project/locations/us-central1/processes/my-process/runs/my-run/lineageEvents/my-lineage-event"
]
}
Tools zum Senden von OpenLineage-Nachrichten
Um das Senden von Ereignissen an die Data Lineage API zu vereinfachen, können Sie verschiedene Tools und Bibliotheken verwenden:
- Google Cloud-Clientbibliotheken für Data Lineage:Google bietet Clientbibliotheken für die programmatische Interaktion mit der Data Lineage API. Eine Installationsanleitung finden Sie unter Clientbibliotheken.
- Google Cloud Java Producer Library:Google bietet eine Open-Source-Java-Bibliothek, mit der Sie OpenLineage-Ereignisse erstellen und an die Data Lineage API senden können. Weitere Informationen finden Sie im Blogpost Producer java library for Data Lineage is now open source. Die Bibliothek ist auf GitHub und Mavenverfügbar.
- OpenLineage GCP Transport: Für Java-basierte OpenLineage-Ersteller ist ein
spezieller
GcpLineage Transport
verfügbar. Er vereinfacht die Einbindung in die Data Lineage API, da weniger Code zum Senden von Ereignissen an die Data Lineage API erforderlich ist. Der
GcpLineageTransportkann als Ereignissenke für jeden vorhandenen OpenLineage-Ersteller wie Airflow, Spark und Flink konfiguriert werden. Weitere Informationen und Beispiele finden Sie unter GcpLineage.
Informationen aus OpenLineage analysieren
Informationen zum Analysieren der importierten OpenLineage-Ereignisse finden Sie unter Herkunftsgraphen in der Knowledge Catalog-UI ansehen.
Gespeicherte OpenLineage-Facet-Daten
Die Data Lineage API speichert nicht alle Facet-Daten aus den OpenLineage-Nachrichten. Die Data Lineage API speichert die folgenden Facet-Felder:
spark_versionopenlineage-spark-versionspark-version
- alle
spark.logicalPlan.* environment-properties(custom Google Cloud lineage-Facet)origin.sourcetypeundorigin.namespark.app.idspark.app.namespark.batch.idspark.batch.uuidspark.cluster.namespark.cluster.regionspark.job.idspark.job.uuidspark.project.idspark.query.node.namespark.session.idspark.session.uuid
Die Data Lineage API speichert die folgenden Informationen:
eventTimerun.runIdjob.namespacejob.name
Nächste Schritte
- Weitere Informationen zur Datenherkunft mit Managed Service for Apache Spark und Hive-Datenherkunft integrationen.
- Interaktives Lab ausprobieren: Capture and Explore Data Updates With Data Lineage and OpenLineage