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
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.
Ative as APIs Data Lineage e Data Catalog.
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:
-
Visualizar a visualização da linhagem no Data Catalog ou usar a API Data Lineage:
Leitor da linhagem de dados (
roles/datalineage.viewer
) -
Crie a linhagem manualmente usando a API:
Produtor de eventos da linhagem de dados (
roles/datalineage.producer
). -
Edite a linhagem usando a API:
Editor da linhagem de dados (
roles/datalineage.editor
) -
Realizar todas as operações na linhagem:
Administrador da linhagem de dados (
roles/datalineage.admin
)
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:
A seguir
- Saiba mais sobre a linhagem de dados.