Utilizzare la derivazione dei dati in Dataproc

La derivazione dei dati è una funzionalità di Dataplex che consente di monitorare il modo in cui i dati vengono spostati attraverso i sistemi: da dove provengono, dove vengono inviati e a quali trasformazioni sono sottoposti.

La derivazione dei dati è disponibile per tutti i job Spark di Dataproc tranne SparkR, con le immagini Dataproc Compute Engine 2.0.74 e successive e 2.1.22 e successive. La funzionalità di origine è disponibile per le origini dati BigQuery e Cloud Storage.

Dopo aver attivato la funzionalità nel cluster Dataproc, i job Spark di Dataproc acquisiscono gli eventi di eredità e li pubblicano nell'API Data Lineage di Dataplex. Dataproc si integra con l'API Data Lineage tramite OpenLineage, utilizzando il plug-in Spark OpenLineage.

Puoi accedere alle informazioni sulla derivazione tramite Dataplex utilizzando quanto segue:

Limitazioni

La derivazione non è supportata per quanto segue:

  • Connettore BigQuery versione 2 (API origine dati versione 2 di Spark)
  • Carico di lavoro di streaming Spark

Prima di iniziare

  1. Nella console Google Cloud, nella pagina di selezione del progetto, seleziona il progetto che contiene il cluster Dataproc per cui vuoi monitorare la sequenza.

    Vai al selettore dei progetti

  2. Abilita le API Data Lineage e Data Catalog.

    Abilita le API

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per utilizzare la cronologia dei dati in Dataproc, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'account di servizio VM del cluster Dataproc:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Abilita la derivazione dei dati in Dataproc

Attiva la tracciabilità a livello di cluster, in modo che tutti i job Spark inviati nel cluster registrino le informazioni sulla tracciabilità all'API Data Lineage.

Crea un cluster Dataproc

Crea un cluster Dataproc con la proprietà dataproc:dataproc.lineage.enabled impostata su 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

Invia un job Spark

Quando invii un job Spark su un cluster Dataproc creato con la derivazione abilitata, Dataproc acquisisce e registra le informazioni sulla derivazione nell'API Data Lineage.

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

Le proprietà spark.openlineage.namespace e spark.openlineage.appName sono facoltative e vengono utilizzate per identificare in modo univoco il job. Se non passi queste proprietà, Dataproc utilizza i seguenti valori predefiniti:

  • Valore predefinito per spark.openlineage.namespace: PROJECT_ID
  • Valore predefinito per spark.openlineage.appName: spark.app.name

Visualizzare i grafici della derivazione in Dataplex

Un grafico di visualizzazione della struttura mostra le relazioni tra le risorse del progetto e i processi che le hanno create. Puoi visualizzare le informazioni sulla cronologia dei dati sotto forma di visualizzazione di grafici nella console Google Cloud o recuperarle dall'API Data Lineage sotto forma di dati JSON.

Per saperne di più, consulta Visualizzare i grafici della derivazione nell'interfaccia utente di Dataplex.

Esempio

Prendi in considerazione il seguente job Spark che legge i dati da una tabella BigQuery e li scrive in un'altra tabella BigQuery:

#!/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()

Questo job Spark crea il seguente grafico della struttura nella UI di Dataplex:

Grafo di derivazione di esempio

Disattivare la derivazione dei dati in Dataproc

Dopo aver attivato la consistenza quando crei un cluster, non puoi disabilitarla a livello di cluster. Per disattivare la concatenazione in un cluster Dataproc, ricrea il cluster senza la proprietà dataproc:dataproc.lineage.enabled.

Per disattivare la concatenazione per un determinato job su un cluster creato con la concatenazione abilitata, devi passare la proprietà spark.extraListeners con valore vuoto al momento dell'invio del job.

Passaggi successivi