Spark-Data-Lineage verwenden

In diesem Dokument wird beschrieben, wie Sie die Datenherkunft für Ihre Managed Service for Apache Spark-Spark-Jobs entweder auf Projekt- oder Clusterebene 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-Spark-Jobs mit Ausnahme von SparkR- und Spark-Streaming-Jobs verfügbar und unterstützt BigQuery- und Cloud Storage-Datenquellen. Sie ist in den Managed Service for Apache Spark-Image-Versionen 2.0.74+, 2.1.22+, 2.2.50+, 2.3.1+ und 3.0 enthalten.

Nachdem Sie die Funktion in Ihrem Managed Service for Apache Spark-Cluster aktiviert haben, erfassen Managed Service for Apache Spark Spark-Jobs Datenherkunftsereignisse und veröffentlichen sie in der Knowledge Catalog Data Lineage API. Managed Service for Apache Spark wird über OpenLineagein die Data Lineage API eingebunden. Dazu wird das OpenLineage-Spark-Plug-inverwendet.

Sie können über Knowledge Catalog auf Informationen zur Datenherkunft zugreifen. Verwenden Sie dazu:

Hinweis

  1. Wählen Sie in der Google Cloud Console auf der Projektauswahlseite das Projekt aus, das den Managed Service for Apache Spark-Cluster enthält, für den Sie die Herkunft verfolgen möchten.

    Zur Projektauswahl

  2. Aktivieren Sie die Data Lineage API.

    APIs aktivieren

    Anstehende Änderungen an der Spark-Datenherkunft In den Versionshinweisen zu Managed Service for Apache Spark finden Sie die Ankündigung einer Änderung, durch die die Spark-Datenherkunft automatisch für Ihre Projekte und Cluster verfügbar gemacht wird, wenn Sie die Data Lineage API aktivieren (siehe Lineage-Erfassung für einen Dienst steuern). Zusätzliche Einstellungen auf Projekt- oder Clusterebene sind dann nicht mehr erforderlich.

Erforderliche Rollen

Wenn Sie einen Managed Service for Apache Spark-Cluster mit dem Standarddienstkonto der VM erstellen, hat er die Managed Service for Apache Spark Worker Rolle, 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 Dienstkontoverwendet, müssen Sie dem benutzerdefinierten Dienstkonto eine erforderliche Rolle zuweisen, um die Datenherkunft im Cluster zu aktivieren. Das wird im folgenden Absatz 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 zum Verwenden der Datenherkunft mit Managed Service for Apache Spark benötigen:

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, ist sie für alle nachfolgenden Spark-Jobs aktiviert, die in Managed Service for Apache Spark-Clustern im Projekt ausgeführt werden.

Setzen Sie die folgenden benutzerdefinierten Projektmetadaten, um die Spark-Datenherkunft auf Projektebene zu aktivieren: set the following custom project metadata:

Schlüssel Wert
DATAPROC_LINEAGE_ENABLED true
DATAPROC_CLUSTER_SCOPES https://www.googleapis.com/auth/cloud-platform
Das Festlegen dieses VM-Zugriffsbereichs ist nur für Cluster mit der Image-Version 2.0 erforderlich. Für Cluster mit der Image-Version 2.1 und höher wird er automatisch 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, ist sie für alle unterstützten Spark-Jobs aktiviert, die in Managed Service for Apache Spark-Clustern ausgeführt werden. Diese Einstellung überschreibt alle Einstellungen für die Spark-Datenherkunft auf Projektebene. Wenn die Spark Datenherkunft auf Projektebene deaktiviert, aber auf Clusterebene aktiviert ist, hat die Clusterebene Vorrang und die Datenherkunft ist für unterstützte Spark-Jobs aktiviert, die im Cluster ausgeführt werden .

Wenn Sie die Spark-Datenherkunft in einem Cluster aktivieren möchten, erstellen Sie einen Managed Service for Apache Spark-Cluster bei dem die dataproc:dataproc.lineage.enabled Clustereigenschaft auf true gesetzt 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 in einem Cluster deaktivieren, indem Sie die Eigenschaft dataproc:dataproc.lineage.enabled beim Erstellen des Clusters auf false setzen.

  • Datenherkunft in einem Cluster deaktivieren: Wenn Sie einen Cluster erstellen möchten, in dem die Datenherkunft deaktiviert ist, setzen Sie dataproc:dataproc.lineage.enabled=false. Nach dem Erstellen des Clusters 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 die Eigenschaft dataproc:dataproc.lineage.enabled auf false setzen.

  • Bereich für Cluster mit der Image-Version 2.0 festlegen:Für die Spark-Datenherkunft ist der Bereich für den VM-Zugriff auf den Managed Service for Apache Spark-Cluster erforderlich. cloud-platform Für Managed Service for Apache Spark-Cluster mit der Image-Version 2.1 und höher ist cloud-platform aktiviert. Wenn Sie beim Erstellen eines Clusters die Managed Service for Apache Spark-Image-Version 2.0 angeben, setzen Sie den Bereich auf cloud-platform.

Spark-Datenherkunft für einen Job deaktivieren

Wenn die Spark-Datenherkunft in einem Cluster aktiviert ist, können Sie sie für einen Job deaktivieren, indem Sie beim Senden des Jobs die Eigenschaft 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 senden in einem Managed Service for Apache Spark-Cluster, 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_APPNAME

Hinweise:

  • Das Hinzufügen der Eigenschaften spark.openlineage.namespace und spark.openlineage.appName, die zur eindeutigen Identifizierung des Jobs verwendet werden, ist optional. Wenn Sie diese Eigenschaften 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

Herkunft in Knowledge Catalog ansehen

Ein Herkunftsdiagramm zeigt Beziehungen zwischen Ihren Projektressourcen und den Prozessen, mit denen sie erstellt wurden. Sie können Informationen zur Datenherkunft in der Google Cloud Konsole ansehen oder sie in Form von JSON-Daten aus der 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. Ein Cloud Storage-Bucket wird für die temporäre Speicherung 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.

Beispiel für ein Herkunftsdiagramm

Nächste Schritte