In diesem Dokument wird beschrieben, wie Sie die Datenherkunft für Ihre Dataproc Spark-Jobs entweder auf Projekt- oder Clusterebene aktivieren.
Die Datenherkunft ist ein Dataplex Universal Catalog-Feature, mit dem Sie verfolgen können, wie sich Daten durch Ihre Systeme bewegen – woher sie kommen, wohin sie übergeben werden und welche Transformationen auf sie angewendet werden.
Die Datenherkunft ist für alle Dataproc Spark-Jobs verfügbar, mit Ausnahme von SparkR- und Spark-Streaming-Jobs. Sie unterstützt BigQuery- und Cloud Storage-Datenquellen. Sie ist in Dataproc on Compute Engine-Image-Versionen 2.0.74+, 2.1.22+, 2.2.50 und höher enthalten.
Nachdem Sie die Funktion in Ihrem Dataproc-Cluster aktiviert haben, werden in Dataproc-Spark-Jobs Daten-Lineage-Ereignisse erfasst und in der Data Lineage API von Dataplex Universal Catalog veröffentlicht. Dataproc wird über OpenLineage in die Data Lineage API eingebunden. Dazu wird das OpenLineage Spark-Plug-in verwendet.
Sie können über Dataplex Universal Catalog auf Informationen zur Datenherkunft zugreifen. Dazu haben Sie folgende Möglichkeiten:
Hinweise
Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl das Projekt aus, das den Dataproc-Cluster enthält, für den Sie die Herkunft verfolgen möchten.
Aktivieren Sie die Data Lineage API.
Erforderliche Rollen
Wenn Sie einen Dataproc-Cluster mit dem Standarddienstkonto für VMs erstellen, hat er die Rolle Dataproc Worker
, die die Datenherkunft ermöglicht. Sie müssen nichts weiter unternehmen.
Wenn Sie jedoch einen Dataproc-Cluster erstellen, der ein benutzerdefiniertes Dienstkonto verwendet, müssen Sie dem benutzerdefinierten Dienstkonto eine erforderliche Rolle zuweisen, um die Datenherkunft im Cluster zu aktivieren.
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das benutzerdefinierte Dienstkonto Ihres Clusters zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung von Datenherkunft mit Dataproc benötigen:
-
Weisen Sie eine der folgenden Rollen zu:
-
Dataproc-Worker (
roles/dataproc.worker
) -
Data Lineage-Bearbeiter (
roles/datalineage.editor
) -
Data Lineage-Ersteller (
roles/datalineage.producer
) -
Administrator für Datenherkunft (
roles/datalineage.admin
)
-
Dataproc-Worker (
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Spark Data Lineage auf Projektebene aktivieren
Sie können die Spark-Datenherkunft auf Projektebene aktivieren. Unterstützte Spark-Jobs, die in Clustern ausgeführt werden, die nach der Aktivierung der Datenherkunft in einem Projekt erstellt wurden, haben die Datenherkunft aktiviert. Für Jobs, die auf vorhandenen Clustern ausgeführt werden (Cluster, die vor der Aktivierung des Datenursprungs auf Projektebene erstellt wurden), ist der Datenursprung nicht aktiviert.
Spark Data Lineage auf Projektebene aktivieren
Wenn Sie die Spark-Datenherkunft auf Projektebene aktivieren möchten, legen Sie die folgenden benutzerdefinierten Projektmetadaten fest:
Schlüssel | Wert |
---|---|
DATAPROC_LINEAGE_ENABLED |
true |
DATAPROC_CLUSTER_SCOPES |
https://www.googleapis.com/auth/cloud-platform |
Sie können den Spark-Datenabstammungsbaum auf Projektebene deaktivieren, indem Sie die Metadaten DATAPROC_LINEAGE_ENABLED
auf false
setzen.
Spark-Data Lineage auf Clusterebene aktivieren
Sie können die Spark-Datenherkunft beim Erstellen eines Clusters aktivieren, sodass für alle unterstützten Spark-Jobs, die an den Cluster gesendet werden, die Datenherkunft aktiviert ist.
Spark-Data Lineage auf Clusterebene aktivieren
Wenn Sie die Spark-Datenherkunft in einem Cluster aktivieren möchten, erstellen Sie einen Dataproc-Cluster, bei dem die Clustereigenschaft dataproc:dataproc.lineage.enabled
auf true
gesetzt ist.
Cluster mit Image-Version 2.0:Für die Spark-Datenherkunft ist der cloud-platform
-Bereich für den Zugriff auf Dataproc-Cluster-VMs erforderlich. In Clustern mit Dataproc-Imageversion, die mit der Imageversion 2.1 und höher erstellt wurden, ist cloud-platform
aktiviert. Wenn Sie beim Erstellen eines Clusters die Dataproc-Imageversion 2.0
angeben, legen Sie den Bereich auf cloud-platform
fest.
Beispiel für die gcloud CLI:
gcloud dataproc clusters create CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--properties 'dataproc:dataproc.lineage.enabled=true'
Spark-Data-Lineage für einen Job deaktivieren
Wenn Sie die Spark-Datenherkunft auf Clusterebene aktivieren, können Sie sie für einen bestimmten Job deaktivieren, indem Sie beim Senden des Jobs die Eigenschaft spark.extraListeners
mit einem leeren Wert ("") übergeben.
Nach der Aktivierung kann die Spark-Datenherkunft im Cluster nicht mehr deaktiviert werden. Wenn Sie die Spark-Datenherkunft für alle Clusterjobs entfernen möchten, können Sie den Cluster ohne die Eigenschaft dataproc:dataproc.lineage.enabled
neu erstellen.
Spark-Job senden
Wenn Sie einen Spark-Job in einem Dataproc-Cluster ausführen, der mit aktivierter Spark-Datenherkunft erstellt wurde, erfasst Dataproc die Informationen zur Datenherkunft und meldet sie an die Data Lineage API.
gcloud dataproc jobs submit spark \
--cluster=CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--class CLASS \
--jars=gs://APPLICATION_BUCKET/spark-application.jar \
--properties=spark.openlineage.namespace=CUSTOM_NAMESPACE,spark.openlineage.appName=CUSTOM_APPNAME
Hinweise:
- Das Hinzufügen der Eigenschaften
spark.openlineage.namespace
undspark.openlineage.appName
, die zur eindeutigen Identifizierung des Jobs verwendet werden, ist optional. Wenn Sie diese Attribute nicht hinzufügen, verwendet Dataproc die folgenden Standardwerte:- Standardwert für
spark.openlineage.namespace
: PROJECT_ID - Standardwert für
spark.openlineage.appName
:spark.app.name
- Standardwert für
Lineage in Dataplex Universal Catalog ansehen
Ein Herkunftsdiagramm zeigt die Beziehungen zwischen Ihren Projektressourcen und den Prozessen, mit denen sie erstellt wurden. Sie können Informationen zur Datenherkunft in der Google Cloud Console ansehen oder sie in Form von JSON-Daten über die Data Lineage API abrufen.
PySpark-Beispielcode:
Der folgende PySpark-Job liest Daten aus einer öffentlichen BigQuery-Tabelle und schreibt die Ausgabe dann in eine neue Tabelle in einem vorhandenen BigQuery-Dataset. Für die temporäre Speicherung wird ein Cloud Storage-Bucket verwendet.
#!/usr/bin/env python
from pyspark.sql import SparkSession
import sys
spark = SparkSession \
.builder \
.appName('LINEAGE_BQ_TO_BQ') \
.getOrCreate()
bucket = 'gs://BUCKET`
spark.conf.set('temporaryCloudStorageBucket', bucket)
source = 'bigquery-public-data:samples.shakespeare'
words = spark.read.format('bigquery') \
.option('table', source) \
.load()
words.createOrReplaceTempView('words')
word_count = spark.sql('SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word')
destination_table = 'PROJECT_ID:DATASET.TABLE'
word_count.write.format('bigquery') \
.option('table', destination_table) \
.save()
Ersetzen Sie die folgenden Werte:
BUCKET: Der Name eines vorhandenen Cloud Storage-Bucket.
PROJECT_ID, DATASET und TABLE: Geben Sie Ihre Projekt-ID, den Namen eines vorhandenen BigQuery-Datasets und den Namen einer neuen Tabelle ein, die im Dataset erstellt werden soll (die Tabelle darf nicht vorhanden sein).
Sie können das Lineage-Diagramm in der Dataplex Universal Catalog-Benutzeroberfläche ansehen.