Menggunakan lineage data dengan Dataproc Serverless

Dokumen ini menjelaskan cara mengaktifkan lineage data di Dataproc Serverless untuk workload batch Spark dan sesi interaktif di tingkat project, workload batch, atau sesi interaktif.

Ringkasan

Silsilah data adalah fitur Dataplex yang memungkinkan Anda melacak bagaimana data bergerak melalui sistem: dari mana data berasal, tempat data diteruskan, dan transformasi yang diterapkan pada data.

Dataproc Serverless for Spark mencatat peristiwa lineage dan memublikasikannya ke Data Lineage API Dataplex. Dataproc Serverless untuk Spark terintegrasi dengan Data Lineage API melalui OpenLineage, menggunakan plugin Spark OpenLineage.

Anda dapat mengakses informasi silsilah melalui Dataplex, menggunakan grafik silsilah dan Data Lineage API. Untuk informasi selengkapnya, lihat Melihat grafik silsilah di Dataplex.

Ketersediaan, kemampuan, dan batasan

Lineage data, yang mendukung sumber data BigQuery dan Cloud Storage, tersedia untuk workload dan sesi yang berjalan dengan versi runtime Dataproc Serverless for Spark 1.1, 1.2, dan 2.2, dengan pengecualian dan batasan berikut:

  • Lineage data tidak tersedia untuk sesi atau beban kerja streaming SparkR atau Spark.

Sebelum memulai

  1. Di halaman pemilih project di konsol Google Cloud, pilih project yang akan digunakan untuk sesi atau beban kerja Dataproc Serverless for Spark.

    Buka pemilih project

  2. Aktifkan Data Lineage API dan Dataplex API.

    Aktifkan API

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan guna menggunakan silsilah data di Dataproc Serverless untuk Spark, minta administrator untuk memberi Anda peran IAM berikut di akun layanan VM cluster Dataproc:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Mengaktifkan silsilah data di level project

Anda dapat mengaktifkan silsilah data di tingkat project. Jika diaktifkan di level project, semua beban kerja batch berikutnya dan sesi interaktif yang Anda jalankan di project akan memiliki lineage Spark yang diaktifkan.

Cara mengaktifkan silsilah data di tingkat project

Untuk mengaktifkan silsilah data di tingkat project, tetapkan metadata project kustom berikut.

Kunci Nilai
DATAPROC_LINEAGE_ENABLED true
DATAPROC_CLUSTER_SCOPES https://www.googleapis.com/auth/cloud-platform

Anda dapat menonaktifkan silsilah data di tingkat project dengan menetapkan metadata DATAPROC_LINEAGE_ENABLED ke false.

Mengaktifkan silsilah data untuk workload batch Spark

Anda dapat mengaktifkan silsilah data pada beban kerja batch dengan menetapkan properti spark.dataproc.lineage.enabled ke true saat mengirimkan beban kerja.

Contoh workload batch

Contoh ini mengirimkan beban kerja lineage-example.py batch dengan lineage Spark yang diaktifkan.

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

lineage-example.py membaca data dari tabel BigQuery, lalu menulis output ke tabel BigQuery yang berbeda.

#!/usr/bin/env python

from pyspark.sql import SparkSession
import sys

spark = SparkSession \
  .builder \
  .appName('LINEAGE_BQ_TO_BQ') \
  .getOrCreate()

bucket = lineage-demo
spark.conf.set('temporaryCloudStorageBucket', 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()

Anda dapat melihat grafik silsilah di UI Dataplex.

Grafik silsilah Spark

Mengaktifkan silsilah data untuk sesi interaktif Spark

Anda dapat mengaktifkan silsilah data di sesi interaktif Spark dengan menetapkan properti spark.dataproc.lineage.enabled ke true saat Anda membuat sesi atau template sesi.

Contoh sesi interaktif

Kode notebook PySpark berikut mengonfigurasi sesi interaktif Dataproc Serverless dengan silsilah data Spark yang diaktifkan dan berjalan di subnet regional VPC Akses Google Pribadi. Kemudian, sesi Spark Connect akan dibuat yang menjalankan kueri jumlah kata pada set data Shakespeare BigQuery publik, lalu menulis output ke tabel BigQuery.

from dataproc_spark_session.session.spark.connect import DataprocSparkSession
from google.cloud.dataproc_v1 import Session

session = Session()

# Configure the Dataproc Serverless interactive session. Enable Spark data lineage.
project_id = "sample-project-id"
region = "us-central1"
subnet_name = "sample-private-google-access-subnet"
session.environment_config.execution_config.subnetwork_uri = f"projects/{project_id}/regions/{region}/subnetworks/{subnet_name}"
session.runtime_config.properties["spark.dataproc.lineage.enabled"] = "true"
session.runtime_config.version = "2.2"

# Create the Spark Connect session.
spark = (
   DataprocSparkSession.builder
     .appName("LINEAGE_BQ_TO_BQ")
     .dataprocConfig(session)
     .getOrCreate()
)
# Run a wordcount query on the public BigQuery Shakespeare dataset.
source = "bigquery-public-data:samples.shakespeare"
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')

# Output the results to a BigQuery destination table.
destination = sample.destination
word_count.write.format('bigquery') \
  .option('table', destination) \
  .save()

Anda dapat melihat grafik garis keturunan data dengan mengklik nama tabel tujuan yang tercantum di panel navigasi pada halaman Explorer BigQuery, lalu memilih tab garis keturunan di panel detail tabel.

Grafik silsilah Spark

Melihat silsilah di Dataplex

Grafik silsilah menampilkan hubungan antara resource project dan proses yang membuatnya. Anda dapat melihat informasi silsilah data di konsol Google Cloud atau mengambil informasi dari Data Lineage API sebagai data JSON.

Langkah berikutnya