In diesem Dokument wird beschrieben, wie Sie die Datenherkunft für Ihre Managed Service for Apache Spark-Jobs entweder auf Projekt- oder Cluster-Ebene aktivieren.
Die Datenherkunft ist eine Knowledge Catalog-Funktion, mit der 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 Managed Service for Apache Spark-Jobs mit Ausnahme von SparkR- und Spark-Streamingjobs verfügbar und unterstützt BigQuery- und Cloud Storage-Datenquellen. Es ist in den Image-Versionen 2.0.74+, 2.1.22+, 2.2.50+, 2.3.1+ und 3.0 von Managed Service for Apache Spark enthalten.
Sobald Sie die Funktion in Ihrem Managed Service for Apache Spark-Cluster aktivieren, erfassen Managed Service for Apache Spark-Jobs Datenherkunftsereignisse und veröffentlichen sie in der Data Lineage API von Knowledge Catalog. Managed Service for Apache Spark wird über OpenLineage mithilfe des OpenLineage Spark-Plug-ins in die Data Lineage API eingebunden.
Sie können über Knowledge Catalog auf Informationen zur Datenherkunft zugreifen. Verwenden Sie dazu Folgendes:
Hinweis
Wählen Sie in der Google Cloud Console auf der Projektauswahlseite das Projekt aus, das den Managed Service for Apache Spark-Cluster enthält, dessen Herkunft Sie verfolgen möchten.
Aktivieren Sie die Data Lineage API.
Anstehende Änderungen an der Spark-Datenherkunft: In den Versionshinweisen zu Managed Service for Apache Spark wird eine Änderung angekündigt, durch die die Spark-Datenherkunft automatisch für Ihre Projekte und Cluster verfügbar wird, wenn Sie die Data Lineage API aktivieren (siehe Aufnahme der Datenherkunft für einen Dienst steuern). Zusätzliche Einstellungen auf Projekt- oder Clusterebene sind nicht erforderlich.
Erforderliche Rollen
Wenn Sie einen Managed Service for Apache Spark-Cluster mit dem Standard-VM-Dienstkonto erstellen, hat er die Rolle Managed Service for Apache Spark Worker, die die Datenherkunft ermöglicht. Es sind keine weiteren Maßnahmen erforderlich.
Wenn Sie jedoch einen Managed Service for Apache Spark-Cluster erstellen, der ein benutzerdefiniertes Dienstkonto verwendet, müssen Sie dem benutzerdefinierten Dienstkonto eine erforderliche Rolle zuweisen, um die Datenherkunft im Cluster zu aktivieren. Dies wird im folgenden Abschnitt erläutert.
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 der Datenherkunft mit Managed Service for Apache Spark benötigen:
-
Weisen Sie eine der folgenden Rollen zu:
- Managed Service for Apache Spark Worker (
roles/dataproc.worker) - Data Lineage-Bearbeiter (
roles/datalineage.editor) - Data Lineage Producer (
roles/datalineage.producer) - Data Lineage Administrator (
roles/datalineage.admin)
- Managed Service for Apache Spark 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-Datenherkunft aktivieren
Sie können die Spark-Datenherkunft auf Projekt- oder Clusterebene aktivieren.
Spark-Datenherkunft auf Projektebene aktivieren
Nachdem Sie die Spark-Datenherkunft auf Projektebene aktiviert haben, wird die Spark-Datenherkunft für nachfolgende Spark-Jobs aktiviert, die in Managed Service for Apache Spark-Clustern im Projekt ausgeführt werden.
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-platformDas Festlegen dieses VM-Zugriffsbereichs ist nur für Cluster mit der Image-Version 2.0 erforderlich. Sie wird automatisch für Cluster mit der Image-Version 2.1 und höher festgelegt. |
Sie können die Spark-Datenherkunft auf Projektebene deaktivieren, indem Sie die Metadaten DATAPROC_LINEAGE_ENABLED auf false setzen.
Spark-Datenherkunft auf Clusterebene aktivieren
Wenn Sie die Spark-Datenherkunft beim Erstellen eines Clusters aktivieren, wird die Spark-Datenherkunft für unterstützte Spark-Jobs aktiviert, die in Managed Service for Apache Spark-Clustern ausgeführt werden. Diese Einstellung überschreibt alle Spark-Datenherkunftseinstellungen auf Projektebene: Wenn die Spark-Datenherkunft auf Projektebene deaktiviert, aber auf Clusterebene aktiviert ist, hat die Clusterebene Vorrang und für unterstützte Spark-Jobs, die auf dem Cluster ausgeführt werden, ist die Datenherkunft aktiviert.
Wenn Sie die Spark-Datenherkunft in einem Cluster aktivieren möchten, erstellen Sie einen Managed Service for Apache Spark-Cluster, wobei die Cluster-Property dataproc:dataproc.lineage.enabled auf true festgelegt ist.
Beispiel für die gcloud CLI:
gcloud dataproc clusters create CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--properties 'dataproc:dataproc.lineage.enabled=true'Sie können die Spark-Datenherkunft für einen Cluster deaktivieren, indem Sie beim Erstellen des Clusters das Attribut dataproc:dataproc.lineage.enabled auf false setzen.
Datenherkunft für einen Cluster deaktivieren: Wenn Sie einen Cluster mit deaktivierter Herkunft erstellen möchten, legen Sie
dataproc:dataproc.lineage.enabled=falsefest. Nachdem der Cluster erstellt wurde, können Sie die Spark-Datenherkunft im Cluster nicht mehr deaktivieren. Wenn Sie die Spark-Datenherkunft in einem vorhandenen Cluster deaktivieren möchten, können Sie den Cluster neu erstellen und dabei das Attributdataproc:dataproc.lineage.enabledauffalsesetzen.Bereich für Cluster mit Image-Version 2.0 festlegen: Für die Spark-Datenherkunft ist der
cloud-platformZugriffsbereich für den VM-Zugriff auf den Managed Service for Apache Spark-Cluster erforderlich. Bei Managed Service for Apache Spark-Image-Versionsclustern, die mit der Image-Version2.1und höher erstellt wurden, istcloud-platformaktiviert. Wenn Sie beim Erstellen eines Clusters die Managed Service for Apache Spark-Image-Version2.0angeben, legen Sie den Bereich aufcloud-platformfest.
Spark-Datenherkunft für einen Job deaktivieren
Wenn die Spark-Datenherkunft für einen Cluster aktiviert ist, können Sie sie für einen Job deaktivieren, indem Sie beim Senden des Jobs das Attribut spark.extraListeners mit einem leeren Wert („“) übergeben.
gcloud dataproc jobs submit spark \
--cluster=CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--class CLASS \
--jars=gs://APPLICATION_BUCKET/spark-application.jar \
--properties=spark.extraListeners=''Spark-Job senden
Wenn Sie einen unterstützten Spark-Job in einem Managed Service for Apache Spark-Cluster einreichen, der mit aktivierter Spark-Datenherkunft erstellt wurde, erfasst Managed Service for Apache Spark 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_APPNAMEHinweise:
- Das Hinzufügen der Properties
spark.openlineage.namespaceundspark.openlineage.appName, die zur eindeutigen Identifizierung des Jobs verwendet werden, ist optional. Wenn Sie diese Attribute nicht hinzufügen, verwendet Managed Service for Apache Spark die folgenden Standardwerte:- Standardwert für
spark.openlineage.namespace: PROJECT_ID - Standardwert für
spark.openlineage.appName:spark.app.name
- Standardwert für
Herkunft in Knowledge Catalog ansehen
In einem Herkunftsdiagramm werden die Beziehungen zwischen Ihren Projektressourcen und den Prozessen, die sie erstellt haben, dargestellt. Sie können Informationen zur Datenherkunft in der Google Cloud Console aufrufen oder sie über die Data Lineage API im JSON-Format 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: Die Projekt-ID, der Name eines vorhandenen BigQuery-Datasets und der Name einer neuen Tabelle, die im Dataset erstellt werden soll (die Tabelle darf nicht vorhanden sein)
Sie können das Herkunftsdiagramm in der Knowledge Catalog-Benutzeroberfläche ansehen.