Usa el linaje de datos en Dataproc

El linaje de datos es una función de Dataplex que te permite cómo se mueven los datos a través de tus sistemas: de dónde vienen, hacia dónde se pasan y qué transformaciones se le aplican.

El linaje de datos está disponible para todos los trabajos de Dataproc Spark excepto SparkR, con Dataproc Compute Engine 2.0.74+ y 2.1.22+ imágenes de contenedores. El linaje está disponible para los datos de BigQuery y Cloud Storage fuentes de datos.

Una vez que habilites la función en tu clúster de Dataproc, los trabajos de Spark de Dataproc capturarán eventos de linaje y los publicarán en la API de Data Lineage de Dataplex. Dataproc se integra en la API de Data Lineage a través de OpenLineage, con el Complemento de OpenLineage Spark.

Puedes acceder a la información del linaje a través de Dataplex con lo siguiente:

Limitaciones

Lineage no es compatible con lo siguiente:

  • Versión 2 del conector de BigQuery (versión 2 de la API de fuente de datos de Spark)
  • Carga de trabajo de transmisión de Spark

Antes de comenzar

  1. En la página del selector de proyectos de la consola de Google Cloud, elige el proyecto que contiene el clúster de Dataproc del que quieres hacer un seguimiento y el linaje de datos.

    Ir al selector de proyectos

  2. Habilita las APIs de Data Lineage y Data Catalog.

    Habilitar las API

Roles obligatorios

Para obtener los permisos que necesitas para usar el linaje de datos en Dataproc, pídele a tu administrador que te otorgue los siguientes roles de IAM en la cuenta de servicio de la VM del clúster de Dataproc:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Habilita el linaje de datos en Dataproc

Habilita el linaje a nivel del clúster, de modo que todos los trabajos de Spark enviados en el clúster informen información de linaje a la API de Data Lineage.

Crea un clúster de Dataproc

Crea un clúster de Dataproc con la propiedad dataproc:dataproc.lineage.enabled establecida en 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

Enviar un trabajo de Spark

Cuando envías un trabajo de Spark en un clúster de Dataproc que se creó con el linaje habilitado Dataproc captura e informa la información del linaje al API de 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

Las propiedades spark.openlineage.namespace y spark.openlineage.appName son opcionales y se usan para identificar el trabajo de forma única. Si no apruebas estos propiedades, Dataproc usa los siguientes valores predeterminados:

  • Valor predeterminado para spark.openlineage.namespace: PROJECT_ID
  • Valor predeterminado para spark.openlineage.appName: spark.app.name

Ver gráficos de linaje en Dataplex

Un gráfico de visualización del linaje muestra las relaciones entre tu proyecto recursos y los procesos que los crearon. Puedes ver el linaje de datos información en forma de visualización gráfica en la consola de Google Cloud y recuperarlos desde la API de Data Lineage en forma de datos JSON.

Para obtener más información, consulta Cómo ver gráficos de linaje en la IU de Dataplex.

Ejemplo

Considera el siguiente trabajo de Spark que lee datos de una tabla de BigQuery y los escribe en otra:

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

Este trabajo de Spark crea el siguiente gráfico de linaje en la IU de Dataplex:

Gráfico de linaje de muestra

Inhabilita el linaje de datos en Dataproc

Después de habilitar el linaje cuando creas un clúster, puedes no puede inhabilitar el linaje a nivel del clúster. Para inhabilitar el linaje en un clúster de Dataproc, vuelve a crear el clúster sin el dataproc:dataproc.lineage.enabled.

Para inhabilitar el linaje para un trabajo en particular en un clúster que se creó con linaje habilitado, debes pasar la propiedad spark.extraListeners con un campo cuando envíes el trabajo.

¿Qué sigue?