Data Lineage mit Managed Service for Apache Spark verwenden

In diesem Dokument wird beschrieben, wie Sie die Datenherkunft für Managed Service for Apache Spark-Batcharbeitslasten und interaktive Sitzungen auf Projekt-, Batcharbeitslast- oder interaktiver Sitzungs- oder Laufzeitprofilebene (Sitzungsvorlage) aktivieren.

Übersicht

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.

Arbeitslasten und Sitzungen von Managed Service for Apache Spark erfassen Herkunftsereignisse und veröffentlichen sie in der Data Lineage API des Knowledge Catalog. Managed Service for Apache Spark wird über OpenLineage mit der Data Lineage API eingebunden. Dazu wird das OpenLineage Spark-Plug-in verwendet.

Sie können über Knowledge Catalog auf Herkunftsinformationen zugreifen, indem Sie Herkunftsdiagramme und die Data Lineage API verwenden. Weitere Informationen finden Sie unter Herkunftsdiagramme in Knowledge Catalog ansehen.

Verfügbarkeit

Die Datenherkunft, die BigQuery- und Cloud Storage-Datenquellen unterstützt, ist für Arbeitslasten und Sitzungen verfügbar, die mit unterstützten Laufzeitversionen von Managed Service for Apache Spark ausgeführt werden, mit den folgenden Ausnahmen und Einschränkungen:

  • Die Datenherkunft ist für SparkR- oder Spark-Streaming-Arbeitslasten oder -Sitzungen nicht verfügbar.

Hinweis

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl das Projekt aus, das Sie für Ihre Managed Service for Apache Spark-Arbeitslasten oder ‑Sitzungen verwenden 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 wird eine Änderung angekündigt, durch die die Spark-Datenherkunft automatisch für Ihre Projekte, Batcharbeitslasten und interaktiven Sitzungen verfügbar wird, wenn Sie die Data Lineage API aktivieren (siehe Aufnahme der Datenherkunft für einen Dienst steuern). Zusätzliche Einstellungen für Projekte, Batcharbeitslasten oder interaktive Sitzungen sind nicht erforderlich.

Erforderliche Rollen

Wenn Ihre Batcharbeitslast das Standarddienstkonto für Managed Service for Apache Spark verwendet, hat es die Rolle Managed Service for Apache Spark Worker, die die für die Datenherkunft erforderlichen Berechtigungen enthält.

Wenn Ihre Batcharbeitslast jedoch ein benutzerdefiniertes Dienstkonto verwendet, um die Datenherkunft zu aktivieren, müssen Sie dem benutzerdefinierten Dienstkonto eine der im folgenden Absatz aufgeführten Rollen zuweisen, die die für die Datenherkunft erforderlichen Berechtigungen enthalten.

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr benutzerdefiniertes Dienstkonto für Batch-Arbeitslasten zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung 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 für Ihr Projekt, Ihre Batcharbeitslast oder Ihre interaktive Sitzung aktivieren.

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 einer Batcharbeitslast oder einer interaktiven Sitzung ausgeführt werden.

Wenn Sie die Spark-Datenherkunft für Ihr Projekt aktivieren möchten, legen Sie die folgenden benutzerdefinierten Projektmetadaten fest:

Schlüssel Wert
DATAPROC_LINEAGE_ENABLED true

Sie können die Spark-Datenherkunft für ein Projekt deaktivieren, indem Sie die Metadaten DATAPROC_LINEAGE_ENABLED auf false setzen.

Datenherkunft für eine Spark-Batcharbeitslast aktivieren

Wenn Sie die Datenherkunft für eine Batcharbeitslast aktivieren möchten, legen Sie beim Senden der Arbeitslast das Attribut spark.dataproc.lineage.enabled auf true fest. Diese Einstellung überschreibt alle Spark-Datenherkunftseinstellungen auf Projektebene: Wenn die Spark-Datenherkunft auf Projektebene deaktiviert, aber für die Batcharbeitslast aktiviert ist, hat die Einstellung für die Batcharbeitslast Vorrang.

Sie können die Spark-Datenherkunft für eine Spark-Batcharbeitslast deaktivieren, indem Sie beim Senden der Arbeitslast das Attribut spark.dataproc.lineage.enabled auf false setzen.

In diesem Beispiel wird die gcloud CLI verwendet, um eine Batch-lineage-example.py-Arbeitslast mit aktivierter Spark-Herkunft zu senden.

gcloud dataproc batches submit pyspark lineage-example.py \
    --region=REGION \
    --deps-bucket=gs://BUCKET \
    --properties=spark.dataproc.lineage.enabled=true

Der folgende lineage-example.py-Code 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()

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) \
  .option('writeMethod', 'direct') \
  .save()

Ersetzen Sie Folgendes:

  • REGION: Die Region, in der die Arbeitslast ausgeführt werden soll
  • BUCKET: Der Name eines vorhandenen Cloud Storage-Bucket zum Speichern von Abhängigkeiten
  • 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.

Spark-Herkunftsdiagramm

Datenherkunft für eine interaktive Spark-Sitzung oder ein Laufzeitprofil (Sitzungsvorlage) aktivieren

Wenn Sie die Datenherkunft für eine interaktive Spark-Sitzung oder ein Laufzeitprofil (Sitzungsvorlage) aktivieren möchten, setzen Sie das Attribut spark.dataproc.lineage.enabled auf true, wenn Sie die Sitzung oder das Laufzeitprofil (Sitzungsvorlage) erstellen. Bearbeiten Sie beispielsweise auf der Seite Laufzeitprofil erstellen in der Google Cloud Console unter Zusätzliche Konfiguration die Option Weitere Anpassungen und fügen Sie das Attribut spark.dataproc.lineage.enabled mit dem Wert true unter Spark-Attribute hinzu. Diese Einstellung überschreibt alle Spark-Datenherkunftseinstellungen auf Projektebene: Wenn die Spark-Datenherkunft auf Projektebene deaktiviert, aber für die interaktive Sitzung aktiviert ist, hat die Einstellung für die interaktive Sitzung Vorrang.

Sie können die Spark-Datenherkunft für eine interaktive Spark-Sitzung oder ein Laufzeitprofil (Sitzungsvorlage) deaktivieren, indem Sie beim Erstellen der interaktiven Sitzung oder des Laufzeitprofils (Sitzungsvorlage) das Attribut spark.dataproc.lineage.enabled auf false setzen.

Mit dem folgenden PySpark-Notebook-Code wird eine interaktive Managed Service for Apache Spark-Sitzung mit aktiviertem Spark-Daten-Lineage konfiguriert. Anschließend wird eine Spark Connect-Sitzung erstellt, in der eine Wordcount-Abfrage für ein öffentliches BigQuery-Shakespeare-Dataset ausgeführt wird. Die Ausgabe wird dann in eine neue Tabelle in einem vorhandenen BigQuery-Dataset geschrieben (siehe Spark-Sitzung in einem BigQuery Studio-Notebook erstellen).

# Configure the Dataproc Serverless interactive session
# to enable Spark data lineage.
from google.cloud.dataproc_v1 import Session

session = Session()
session.runtime_config.properties["spark.dataproc.lineage.enabled"] = "true"

# Create the Spark Connect session.
from google.cloud.dataproc_spark_connect import DataprocSparkSession

spark = DataprocSparkSession.builder.dataprocSessionConfig(session).getOrCreate()

# Run a wordcount query on the public BigQuery Shakespeare dataset.
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')

# Output the results to a BigQuery destination table.
destination_table = 'PROJECT_ID:DATASET.TABLE'
word_count.write.format('bigquery') \
  .option('table', destination_table) \
  .save()

Ersetzen Sie Folgendes:

  • 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 Datenherkunftsdiagramm aufrufen, indem Sie im Navigationsbereich auf der BigQuery-Seite Explorer auf den Namen der Zieltabelle klicken und dann im Detailbereich der Tabelle den Tab „Herkunft“ auswählen.

Spark-Herkunftsdiagramm

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 die Informationen über die Data Lineage API als JSON-Daten abrufen.

Nächste Schritte