Data Lineage in Dataproc verwenden

Data Lineage ist ein Dataplex-Feature, mit dem 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.

Data Lineage ist für alle Dataproc Spark-Jobs außer SparkR mit Dataproc Compute Engine-Images ab Version 2.0.74 und 2.1.22 verfügbar. Lineage ist für BigQuery- und Cloud Storage-Datenquellen verfügbar.

Nachdem Sie die Funktion im Dataproc-Cluster aktiviert haben, erfassen Dataproc Spark-Jobs Herkunftsereignisse und veröffentlichen sie in der Dataplex Data Lineage API. Dataproc lässt sich über OpenLineage mit dem OpenLineage Spark-Plug-in in die Data Lineage API einbinden.

So können Sie über Dataplex auf Herkunftsinformationen zugreifen:

Beschränkungen

Herkunft wird für Folgendes nicht unterstützt:

  • BigQuery-Connector-Version 2 (Datenquellen-API-Version 2 von Spark)
  • Spark-Streamingarbeitslast

Hinweise

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl das Projekt aus, das den Dataproc-Cluster enthält, dessen Herkunft Sie verfolgen möchten.

    Zur Projektauswahl

  2. Data Lineage API und Data Catalog API aktivieren

    APIs aktivieren

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das VM-Dienstkonto des Dataproc-Clusters zu gewähren, um die Berechtigungen zu erhalten, die Sie für die Verwendung von Data Lineage in Dataproc benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Data Lineage in Dataproc aktivieren

Aktivieren Sie die Herkunft auf Clusterebene, damit alle gesendeten Spark-Jobs in den Herkunftsinformationen des Clusterberichts an die Data Lineage API gesendet werden.

Dataproc-Cluster erstellen

Erstellen Sie einen Dataproc-Cluster mit dem Attribut dataproc:dataproc.lineage.enabled auf true.

gcloud dataproc clusters create CLUSTER_NAME \
--region REGION \
--zone ZONE \
--project PROJECT_ID \
--properties 'dataproc:dataproc.lineage.enabled=true' \
--scopes https://www.googleapis.com/auth/cloud-platform

Spark-Job senden

Wenn Sie in einem Dataproc-Cluster, der mit aktivierter Herkunft erstellt wurde, einen Spark-Job senden, erfasst Dataproc die Herkunftsinformationen und meldet sie an die Data Lineage API.

gcloud dataproc jobs submit spark \
--project PROJECT_ID \
--cluster=CLUSTER_NAME \
--region REGION \
--class CLASS \
--jars=gs://APPLICATION_BUCKET/spark-application.jar \
--properties=spark.openlineage.namespace=CUSTOM_NAMESPACE,spark.openlineage.appName=CUSTOM_APPNAME

Die Attribute spark.openlineage.namespace und spark.openlineage.appName sind optional und werden verwendet, um den Job eindeutig zu identifizieren. Wenn Sie diese Attribute nicht übergeben, verwendet Dataproc die folgenden Standardwerte:

  • Standardwert für spark.openlineage.namespace: PROJECT_ID
  • Standardwert für spark.openlineage.appName: spark.app.name

Herkunftsdiagramme in Dataplex ansehen

In einem Diagramm zur Herkunft werden die Beziehungen zwischen Ihren Projektressourcen und den Prozessen, mit denen sie erstellt wurden, dargestellt. Sie können Informationen zur Herkunft von Daten in Form einer Grafikvisualisierung in der Google Cloud Console ansehen oder in Form von JSON-Daten aus der Data Lineage API abrufen.

Weitere Informationen finden Sie unter Herkunftsdiagramme in der Dataplex-UI ansehen.

Beispiel

Betrachten Sie den folgenden Spark-Job, der Daten aus einer BigQuery-Tabelle liest und in eine andere BigQuery-Tabelle schreibt:

#!/usr/bin/env python

from pyspark.sql import SparkSession
import sys

spark = SparkSession \
  .builder \
  .appName('LINEAGE_BQ_TO_BQ') \
  .getOrCreate()

bucket = lineage-ol-test
spark.conf.set('temporaryGcsBucket', bucket)

source = sample.source
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 = sample.destination
word_count.write.format('bigquery') \
  .option('table', destination) \
  .save()

Dieser Spark-Job erstellt das folgende Herkunftsdiagramm in der Dataplex-UI:

Beispiel für Herkunftsdiagramm

Data Lineage in Dataproc deaktivieren

Nachdem Sie die Laufzeit beim Erstellen eines Clusters aktiviert haben, können Sie die Herkunft nicht mehr auf Clusterebene deaktivieren. Wenn Sie die Herkunft in einem Dataproc-Cluster deaktivieren möchten, erstellen Sie den Cluster ohne das Attribut dataproc:dataproc.lineage.enabled neu.

Wenn Sie die Herkunft für einen bestimmten Job in einem Cluster deaktivieren möchten, der mit aktivierter Herkunft erstellt wurde, müssen Sie beim Senden des Jobs das Attribut spark.extraListeners mit leerem Wert übergeben.

Nächste Schritte