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
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.
Habilita las APIs de Data Lineage y Data Catalog.
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 ver la visualización del linaje en Data Catalog o usar la API de Data Lineage, usa el Visualizador de linaje de datos (
roles/datalineage.viewer
). -
Produce el linaje de forma manual con la API:
Productor de eventos de linaje de datos (
roles/datalineage.producer
) -
Edita el linaje con la API:
Editor de linaje de datos (
roles/datalineage.editor
) -
Realiza todas las operaciones sobre el linaje:
Administrador de linaje de datos (
roles/datalineage.admin
)
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:
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?
- Obtén más información sobre el linaje de datos.