Usar a linhagem de dados com o Dataproc sem servidor

Este documento descreve como ativar a linhagem de dados para suas cargas de trabalho em lote do Dataproc Serverless para Spark no nível do projeto ou da carga de trabalho em lote.

Visão geral

A linhagem de dados é um recurso do Dataplex que permite acompanhar como os dados são transmitidos pelos sistemas: origem, destino e quais transformações são aplicadas a eles.

As cargas de trabalho do Dataproc Serverless para Spark capturam eventos de linhagem e os publicam na API Data Lineage do Dataplex. O Dataproc Serverless para Spark se integra à API Data Lineage usando o OpenLineage, com o plug-in do OpenLineage Spark.

É possível acessar informações de linhagem pelo Dataplex usando gráficos de visualização de linhagem e a API Data Lineage. Para mais informações, consulte Visualizar gráficos de linhagem no Dataplex.

Disponibilidade, recursos e limitações

O lineage de dados, que oferece suporte às fontes de dados do BigQuery e do Cloud Storage, está disponível para cargas de trabalho executadas com as versões do ambiente de execução do Dataproc Serverless para Spark 1.1.50+, 1.2.29+ e 2.2.29+, com as seguintes exceções e limitações:

  • A linhagem de dados não está disponível para cargas de trabalho de streaming do SparkR ou do Spark.

Antes de começar

  1. Na página do seletor de projetos no console do Google Cloud, selecione o projeto a ser usado para seus trabalhos do Dataproc Serverless para Spark.

    Acessar o seletor de projetos

  2. Ative as APIs Data Lineage e Data Catalog.

    Ativar as APIs

Funções exigidas

Para receber as permissões necessárias para usar a linhagem de dados no Dataproc sem servidor para Spark, peça ao administrador para conceder a você os seguintes papéis do IAM na conta de serviço da VM do cluster do Dataproc:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Ativar a linhagem de dados no nível do projeto

É possível ativar a linhagem de dados no nível do projeto. Quando ativada no nível do projeto, todas as cargas de trabalho em lote subsequentes executadas no projeto terão a linhagem do Spark ativada.

Como ativar a linhagem de dados no nível do projeto

Para ativar a linhagem de dados no nível do projeto, defina os seguintes metadados personalizados do projeto.

Chave Valor
DATAPROC_LINEAGE_ENABLED true
DATAPROC_CLUSTER_SCOPES https://www.googleapis.com/auth/cloud-platform

É possível desativar a linhagem de dados no nível do projeto definindo os metadados DATAPROC_LINEAGE_ENABLED como false.

Ativar a linhagem de dados para uma carga de trabalho em lote do Spark

É possível ativar a linhagem de dados em uma carga de trabalho em lote definindo a propriedade spark.dataproc.lineage.enabled como true ao enviar a carga de trabalho.

Exemplo da CLI gcloud:

gcloud dataproc batches submit pyspark FILENAME.py
    --region=REGION \
    --properties=spark.dataproc.lineage.enabled=true

Conferir gráficos de linhagem no Dataplex

Um gráfico de visualização de linhagem mostra as relações entre os recursos do projeto e os processos que os criaram. É possível conferir as informações de linhagem de dados em uma visualização de gráfico no console do Google Cloud ou extrair as informações da API Data Lineage como dados JSON.

Para mais informações, consulte Usar a linhagem de dados com os sistemas do Google Cloud .

Exemplo:

A carga de trabalho do Spark a seguir lê dados de uma tabela do BigQuery e grava a saída em outra tabela do 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()

Essa carga de trabalho do Spark cria o seguinte gráfico de linhagem na interface do Dataplex:

Exemplo de gráfico de linhagem

A seguir