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-Ebene 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.

Bei Managed Service for Apache Spark-Arbeitslasten und -Sitzungen werden Herkunftsereignisse erfasst und an die Knowledge Catalog Data Lineage API gesendet. Managed Service for Apache Spark ist über OpenLineage in die Data Lineage API eingebunden. Dazu wird das OpenLineage Spark-Plug-in verwendet.

Sie können über Knowledge Catalog auf Herkunftsinformationen zugreifen. Dazu verwenden Sie Herkunftsgraphen und die Data Lineage API. Weitere Informationen finden Sie unter Herkunftsgraphen 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 Managed Service for Apache Spark-Laufzeitversionen ausgeführt werden. Es gelten die 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 Projektauswahlseite 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 finden Sie die Ankündigung einer Änderung, durch die die Spark-Datenherkunft automatisch für Ihre Projekte, Batcharbeitslasten und interaktiven Sitzungen verfügbar gemacht wird, wenn Sie die Data Lineage API aktivieren (siehe Herkunftserfassung für einen Dienst steuern). Zusätzliche Einstellungen für Projekte, Batcharbeitslasten oder interaktive Sitzungen sind nicht erforderlich.

Erforderliche Rollen

Wenn Ihre Batcharbeitslast das standardmäßige Managed Service for Apache Spark-Dienstkonto verwendet, hat sie 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 das benutzerdefinierte Dienstkonto Ihrer Batcharbeitslast zuzuweisen, um die Berechtigungen zu erhalten, die you need to use data lineage with Managed Service for Apache Spark , ask your administrator to grant you the following IAM roles on your batch workload custom service account:

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, ist 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 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, setzen Sie die Eigenschaft spark.dataproc.lineage.enabled beim Senden 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 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 die Eigenschaft spark.dataproc.lineage.enabled beim Senden der Arbeitslast auf false setzen.

In diesem Beispiel wird die gcloud CLI verwendet, um eine lineage-example.py-Batcharbeitslast 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. 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()

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 den Herkunftsgraphen in der Knowledge Catalog-UI ansehen.

Spark-Herkunftsdiagramm

Datenherkunft 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, setzen Sie die spark.dataproc.lineage.enabled Eigenschaft auf true 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 für eine interaktive Spark-Sitzung oder eine Sitzungsvorlage deaktivieren, indem Sie die Eigenschaft spark.dataproc.lineage.enabled beim Erstellen der interaktiven Sitzung oder Sitzungsvorlage auf false setzen.

Der folgende PySpark-Notebook-Code konfiguriert eine interaktive Managed Service for Apache Spark-Sitzung mit aktivierter Spark-Datenherkunft. Anschließend wird eine Spark Connect Sitzung erstellt, in der eine Wordcount-Abfrage für ein öffentliches BigQuery Shakespeare-Dataset 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 den Datenherkunftsgraphen aufrufen, indem Sie im Navigationsbereich auf der BigQuery-Seite Explorer auf den Namen der Zieltabelle klicken und dann im Bereich mit den Tabellendetails den Tab „Herkunft“ auswählen.

Spark-Herkunftsdiagramm

Herkunft in Knowledge Catalog ansehen

Ein Herkunftsgraph zeigt Beziehungen zwischen Ihren Projektressourcen und den Prozessen, die sie erstellt haben. Sie können Informationen zur Datenherkunft in der Google Cloud console ansehen oder die Informationen als JSON-Daten aus der Data Lineage API abrufen.

Nächste Schritte