Datenherkunft mit Serverless for Apache Spark verwenden

In diesem Dokument wird beschrieben, wie Sie die Datenherkunft fürGoogle Cloud Serverless for Apache Spark-Batcharbeitslasten und interaktive Sitzungen auf Projekt-, Batcharbeitslast- oder interaktiver Sitzung-Ebene aktivieren.

Übersicht

Die Datenherkunft ist eine Dataplex Universal 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.

Google Cloud Bei Serverless for Apache Spark-Arbeitslasten und ‑Sitzungen werden Herkunftsereignisse erfasst und in der Data Lineage API des Dataplex Universal Catalog veröffentlicht. Serverless for Apache Spark ist ü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 verwenden Sie Lineage-Diagramme und die Data Lineage API. Weitere Informationen finden Sie unter Herkunftsgraphen im Dataplex Universal 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 Serverless for Apache Spark-Laufzeitversionen ausgeführt werden. Es gelten die folgenden Ausnahmen und Einschränkungen:

  • Data Lineage ist für SparkR- oder Spark-Streaming-Arbeitslasten oder ‑Sitzungen nicht verfügbar.

Hinweise

  1. Wählen Sie auf der Projektauswahlseite in der Google Cloud Console das Projekt aus, das Sie für Ihre Serverless 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 Serverless for Apache Spark finden Sie die Ankündigung einer Änderung, durch die die Spark-Datenherkunft automatisch für Ihre Projekte, Batcharbeitslasten und interaktiven Sitzungen verfügbar ist, wenn Sie die Data Lineage API aktivieren (siehe Erfassung der Herkunft für einen Dienst steuern). Es sind keine zusätzlichen Einstellungen für Projekte, Batcharbeitslasten oder interaktive Sitzungen erforderlich.

Erforderliche Rollen

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

Wenn für Ihren Batch-Arbeitslast jedoch ein benutzerdefiniertes Dienstkonto verwendet wird, 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 das benutzerdefinierte Dienstkonto Ihrer Batcharbeitslast zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwenden von Datenherkunft mit Dataproc 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-Daten-Lineage aktivieren

Sie können die Spark-Datenherkunft für Ihr Projekt, Ihre Batcharbeitslast oder Ihre interaktive Sitzung aktivieren.

Data Lineage auf Projektebene aktivieren

Nachdem Sie die Spark-Datenherkunft auf Projektebene aktiviert haben, wird sie für alle nachfolgenden Spark-Jobs aktiviert, die in einer Batcharbeitslast oder 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 den Spark-Datenursprung für ein Projekt deaktivieren, indem Sie die Metadaten DATAPROC_LINEAGE_ENABLED auf false setzen.

Data Lineage für eine Spark-Batcharbeitslast aktivieren

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

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

In diesem Beispiel wird die gcloud CLI verwendet, um einen lineage-example.py-Batcharbeitslast mit aktivierter Spark-Abstammung zu senden.

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

Mit dem folgenden lineage-example.py-Code werden Daten aus einer öffentlichen BigQuery-Tabelle gelesen und die Ausgabe in eine neue Tabelle in einem vorhandenen BigQuery-Dataset geschrieben. 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 Lineage-Diagramm in der Dataplex Universal Catalog-UI ansehen.

Spark-Herkunftsdiagramm

Data Lineage für eine interaktive Spark-Sitzung oder eine Sitzungsvorlage aktivieren

Wenn Sie die Datenherkunft für eine interaktive Spark-Sitzung oder eine Sitzungsvorlage aktivieren möchten, legen Sie die Eigenschaft spark.dataproc.lineage.enabled auf true fest, wenn Sie die Sitzung oder Sitzungsvorlage erstellen. Diese Einstellung überschreibt alle Einstellungen für die Spark-Datenherkunft 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 in einer interaktiven Spark-Sitzung oder einer Sitzungsvorlage deaktivieren, indem Sie beim Erstellen der interaktiven Sitzung oder Sitzungsvorlage die Eigenschaft spark.dataproc.lineage.enabled auf false festlegen.

Mit dem folgenden PySpark-Notebook-Code wird eine interaktive Sitzung von Serverless for Apache Spark mit aktivierter Spark-Datenherkunft konfiguriert. Anschließend wird eine Spark Connect-Sitzung erstellt, in der eine Wordcount-Abfrage für ein öffentliches BigQuery-Dataset mit Shakespeare-Texten ausgeführt und die Ausgabe in eine neue Tabelle in einem vorhandenen BigQuery-Dataset geschrieben wird (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 Datenherkunftsdia­gramm aufrufen, indem Sie im Navigationsbereich auf der Seite Explorer von BigQuery auf den Namen der Zieltabelle klicken und dann im Bereich mit den Tabellendetails den Tab „Herkunft“ auswählen.

Spark-Herkunftsdiagramm

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

Nächste Schritte