Utiliser la traçabilité des données dans Dataproc

La traçabilité des données est une fonctionnalité Dataplex qui vous permet de suivre la façon dont les données transitent par vos systèmes: d'où elles proviennent, où elles sont transmises et quelles transformations leur sont appliquées.

La traçabilité des données est disponible pour tous les jobs Dataproc Spark, à l'exception de SparkR, avec Dataproc Compute Engine 2.0.74+ et 2.1.22+ images. La traçabilité est disponible pour les sources de données BigQuery et Cloud Storage.

Une fois la fonctionnalité activée dans votre cluster Dataproc, les tâches Dataproc Spark capturent les événements de traçabilité et les publient dans l'API Data Lineage de Dataplex. Dataproc s'intègre à l'API Data Lineage via OpenLineage et le plug-in Spark OpenLineage.

Vous pouvez accéder aux informations de traçabilité via Dataplex à l'aide des éléments suivants:

Limites

La traçabilité n'est pas compatible avec les éléments suivants:

  • Connecteur BigQuery version 2 (API de source de données version 2 de Spark)
  • Charge de travail par flux Spark

Avant de commencer

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez le projet contenant le cluster Dataproc dont vous souhaitez suivre la traçabilité.

    Accéder au sélecteur de projet

  2. Activer les API Data Lineage et Data Catalog.

    Activer les API

Rôles requis

Afin d'obtenir les autorisations dont vous avez besoin pour utiliser la traçabilité des données dans Dataproc, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur le compte de service de la VM du cluster Dataproc:

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Activer la traçabilité des données dans Dataproc

Activez la traçabilité au niveau du cluster afin que toutes les tâches Spark soumises dans le cluster transmettent des informations de traçabilité à l'API Data Lineage.

Créer un cluster Dataproc

Créez un cluster Dataproc avec la propriété dataproc:dataproc.lineage.enabled définie sur 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

Envoyer une tâche Spark

Lorsque vous envoyez une tâche Spark sur un cluster Dataproc créé avec la traçabilité activée, Dataproc capture et transmet les informations de traçabilité à l'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

Les propriétés spark.openlineage.namespace et spark.openlineage.appName sont facultatives et permettent d'identifier le job de manière unique. Si vous ne transmettez pas ces propriétés, Dataproc utilise les valeurs par défaut suivantes:

  • Valeur par défaut pour spark.openlineage.namespace: PROJECT_ID
  • Valeur par défaut pour spark.openlineage.appName: spark.app.name

Afficher les graphiques de traçabilité dans Dataplex

Un graphique de visualisation de la traçabilité affiche les relations entre les ressources de votre projet et les processus qui les ont créées. Vous pouvez afficher les informations de traçabilité des données sous la forme d'une visualisation graphique dans la console Google Cloud ou les récupérer à partir de l'API Data Lineage sous forme de données JSON.

Pour en savoir plus, consultez Afficher les graphiques de traçabilité dans l'interface utilisateur de Dataplex.

Exemple

Prenons l'exemple de la tâche Spark suivante, qui lit les données d'une table BigQuery et les écrit dans une autre table 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()

Cette tâche Spark crée le graphique de traçabilité suivant dans l'interface utilisateur de Dataplex:

Exemple de graphique de traçabilité

Désactiver la traçabilité des données dans Dataproc

Une fois que vous avez activé la traçabilité lorsque vous créez un cluster, vous ne pouvez pas désactiver la traçabilité au niveau du cluster. Pour désactiver la traçabilité dans un cluster Dataproc, recréez le cluster sans la propriété dataproc:dataproc.lineage.enabled.

Pour désactiver la traçabilité d'une tâche spécifique sur un cluster créé avec la traçabilité activée, vous devez transmettre la propriété spark.extraListeners avec une valeur vide lors de l'envoi de la tâche.

Étapes suivantes