Questo documento descrive come abilitare la derivazione dei dati per i job Spark di Managed Service per Apache Spark a livello di progetto o cluster.
La derivazione dei dati è una funzionalità di Dataplex Universal Catalog che consente di monitorare il modo in cui i dati vengono trasferiti nei sistemi: da dove provengono, dove vengono inviati e a quali trasformazioni sono sottoposti.
La derivazione dei dati è disponibile per tutti i job Spark di Managed Service per Apache Spark, ad eccezione dei job SparkR e Spark Streaming, e supporta le origini dati BigQuery e Cloud Storage. È inclusa nelle versioni delle immagini 2.0.74+, 2.1.22+, 2.2.50+, 2.3.1+ e 3.0 di Managed Service per Apache Spark.
Dopo aver abilitato la funzionalità nel cluster Managed Service per Apache Spark, i job Spark di Managed Service per Apache Spark acquisiscono gli eventi di derivazione dei dati e li pubblicano nell'API Data Lineage di Dataplex Universal Catalog Data Lineage. Managed Service per Apache Spark si integra con l'API Data Lineage tramite OpenLineage, utilizzando il plug-in OpenLineage Spark.
Puoi accedere alle informazioni sulla derivazione dei dati tramite Dataplex Universal Catalog, utilizzando quanto segue:
Prima di iniziare
Nella Google Cloud console, nella pagina del selettore di progetti, seleziona il progetto che contiene il cluster Managed Service per Apache Spark per il quale vuoi monitorare la derivazione.
Abilita l'API Data Lineage.
Modifiche imminenti alla derivazione dei dati Spark Consulta le note di rilascio di Managed Service per Apache Spark per l'annuncio di una modifica che renderà automaticamente disponibile la derivazione dei dati Spark per i tuoi progetti e cluster quando abiliti l'API Data Lineage (vedi Controllare l'importazione della derivazione per un servizio) senza richiedere impostazioni aggiuntive a livello di progetto o cluster.
Ruoli obbligatori
Se crei un cluster Managed Service per Apache Spark utilizzando il
service account VM predefinito,
questo ha il ruolo Managed Service for Apache Spark Worker, che abilita la derivazione dei dati. Non è necessaria alcuna azione aggiuntiva.
Tuttavia, se crei un cluster Managed Service per Apache Spark che utilizza un service account personalizzato, per abilitare la derivazione dei dati sul cluster devi concedere un ruolo obbligatorio a tale account di servizio personalizzato, come spiegato nel paragrafo seguente.
Per ottenere le autorizzazioni necessarie per utilizzare la derivazione dei dati con Managed Service per Apache Spark, chiedi all'amministratore di concederti i seguenti ruoli IAM sul service account personalizzato del cluster:
-
Concedi uno dei seguenti ruoli:
-
Managed Service for Apache Spark Worker (
roles/dataproc.worker) -
Data Lineage Editor (
roles/datalineage.editor) -
Data Lineage Producer (
roles/datalineage.producer) -
Data Lineage Administrator (
roles/datalineage.admin)
-
Managed Service for Apache Spark Worker (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Abilitare la derivazione dei dati Spark
Puoi abilitare la derivazione dei dati Spark a livello di progetto o cluster.
Abilitare la derivazione dei dati Spark a livello di progetto
Dopo aver abilitato la derivazione dei dati Spark a livello di progetto, i job Spark successivi eseguiti sui cluster Managed Service per Apache Spark nel progetto avranno la derivazione dei dati Spark abilitata.
Per abilitare la derivazione dei dati Spark a livello di progetto, imposta i seguenti metadati di progetto personalizzati:
| Chiave | Valore |
|---|---|
DATAPROC_LINEAGE_ENABLED |
true |
DATAPROC_CLUSTER_SCOPES |
https://www.googleapis.com/auth/cloud-platformL'impostazione di questo ambito di accesso alla VM è necessaria solo per i cluster con versione dell'immagine 2.0. Viene impostato automaticamente sui cluster con versione dell'immagine 2.1 e successive. |
Puoi disabilitare la derivazione dei dati Spark a livello di progetto impostando i metadati DATAPROC_LINEAGE_ENABLED su false.
Abilitare la derivazione dei dati Spark a livello di cluster
Se abiliti la derivazione dei dati Spark quando crei un cluster, i job Spark supportati eseguiti sui cluster Managed Service per Apache Spark avranno la derivazione dei dati Spark abilitata. Questa impostazione sostituisce qualsiasi impostazione di derivazione dei dati Spark a livello di progetto: se la derivazione dei dati Spark è disabilitata a livello di progetto, ma abilitata a livello di cluster, il livello di cluster ha la precedenza e i job Spark supportati eseguiti sul cluster avranno la derivazione dei dati abilitata.
Per abilitare la derivazione dei dati Spark su un cluster,
crea un cluster Managed Service per Apache Spark
con la proprietà del cluster dataproc:dataproc.lineage.enabled impostata su true.
Esempio della gcloud CLI:
gcloud dataproc clusters create CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--properties 'dataproc:dataproc.lineage.enabled=true'Puoi disabilitare la derivazione dei dati Spark su un cluster impostando la proprietà dataproc:dataproc.lineage.enabled su false quando crei il cluster.
Disabilitare la derivazione dei dati su un cluster: per creare un cluster con la derivazione disabilitata, imposta
dataproc:dataproc.lineage.enabled=false. Dopo la creazione del cluster, non puoi disabilitare la derivazione dei dati Spark sul cluster. Per disabilitare la derivazione dei dati Spark su un cluster esistente, puoi ricreare il cluster con la proprietàdataproc:dataproc.lineage.enabledimpostata sufalse.Impostare l'ambito sui cluster con versione dell'immagine 2.0: per la derivazione dei dati Spark è necessario l'ambito di accesso alla VM del cluster Managed Service per Apache Spark
cloud-platform. I cluster con versione dell'immagine Managed Service per Apache Spark creati con la versione dell'immagine2.1e successive hannocloud-platformabilitato. Se specifichi la versione dell'immagine Managed Service per Apache Spark2.0quando crei un cluster, imposta l'ambito sucloud-platform.
Disabilitare la derivazione dei dati Spark su un job
Se la derivazione dei dati Spark è abilitata su un cluster, puoi disabilitarla su un job passando la proprietà spark.extraListeners con un valore vuoto ("") quando invii il job.
gcloud dataproc jobs submit spark \
--cluster=CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--class CLASS \
--jars=gs://APPLICATION_BUCKET/spark-application.jar \
--properties=spark.extraListeners=''Inviare un job Spark
Quando invii un job Spark supportato su un cluster Managed Service per Apache Spark creato con la derivazione dei dati Spark abilitata, Managed Service per Apache Spark acquisisce e segnala le informazioni sulla derivazione dei dati all' API Data Lineage.
gcloud dataproc jobs submit spark \
--cluster=CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--class CLASS \
--jars=gs://APPLICATION_BUCKET/spark-application.jar \
--properties=spark.openlineage.namespace=CUSTOM_NAMESPACE,spark.openlineage.appName=CUSTOM_APPNAMENote:
- L'aggiunta delle proprietà
spark.openlineage.namespaceespark.openlineage.appName, utilizzate per identificare in modo univoco il job, è facoltativa. Se non aggiungi queste proprietà, Managed Service per Apache Spark utilizza i seguenti valori predefiniti:- Valore predefinito per
spark.openlineage.namespace: PROJECT_ID - Valore predefinito per
spark.openlineage.appName:spark.app.name
- Valore predefinito per
Visualizzare la derivazione in Dataplex Universal Catalog
Un grafico di derivazione mostra le relazioni tra le risorse del progetto e i processi che le hanno create. Puoi visualizzare le informazioni sulla derivazione dei dati nella Google Cloud console o recuperarle dall'API Data Lineage in formato JSON.
Esempio di codice PySpark:
Il seguente job PySpark legge i dati da una tabella BigQuery pubblica e poi scrive l'output in una nuova tabella in un set di dati BigQuery esistente. Utilizza un bucket Cloud Storage per l'archiviazione temporanea.
#!/usr/bin/env python
from pyspark.sql import SparkSession
import sys
spark = SparkSession \
.builder \
.appName('LINEAGE_BQ_TO_BQ') \
.getOrCreate()
bucket = 'gs://BUCKET`
spark.conf.set('temporaryCloudStorageBucket', bucket)
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) \
.save()
Esegui le seguenti sostituzioni:
BUCKET: il nome di un bucket Cloud Storage esistente
PROJECT_ID, DATASET, e TABLE: l' ID progetto, il nome di un set di dati BigQuery esistente e il nome di una nuova tabella da creare nel set di dati (la tabella non deve esistere)
Puoi visualizzare il grafico di derivazione nell'interfaccia utente di Dataplex Universal Catalog.
Passaggi successivi
- Scopri di più sulla derivazione dei dati.