Menggunakan silsilah data Spark di Dataproc

Dokumen ini menjelaskan cara mengaktifkan asal-usul data untuk tugas Dataproc Spark Anda di tingkat project atau cluster.

Silsilah data adalah fitur Dataplex Universal Catalog yang memungkinkan Anda melacak bagaimana data berpindah melalui sistem: dari mana data berasal, ke mana data diteruskan, dan transformasi yang diterapkan pada data.

Linage data tersedia untuk semua tugas Spark Dataproc, kecuali tugas streaming SparkR dan Spark, serta mendukung sumber data BigQuery dan Cloud Storage. Fitur ini disertakan dengan Dataproc di Compute Engine versi image 2.0.74+, 2.1.22+, 2.2.50+, 2.3.1+, dan 3.0.

Setelah Anda mengaktifkan fitur di cluster Dataproc, tugas Spark Dataproc akan merekam peristiwa silsilah data dan memublikasikannya ke Data Lineage API Dataplex Universal Catalog. Dataproc terintegrasi dengan Data Lineage API melalui OpenLineage, menggunakan plugin OpenLineage Spark.

Anda dapat mengakses informasi silsilah data melalui Dataplex Universal Catalog, menggunakan berikut ini:

Sebelum memulai

  1. Di konsol Google Cloud , pada halaman pemilih project, pilih project yang berisi cluster Dataproc yang ingin Anda lacak silsilahnya.

    Buka pemilih project

  2. Aktifkan Data Lineage API.

    Aktifkan API

    Perubahan silsilah data Spark mendatang Lihat catatan rilis Dataproc untuk mengetahui pengumuman perubahan yang akan otomatis membuat silsilah data Spark tersedia untuk project dan cluster Anda saat Anda mengaktifkan Data Lineage API (lihat Mengontrol penyerapan silsilah untuk layanan) tanpa memerlukan setelan tingkat project atau cluster tambahan.

Peran yang diperlukan

Jika Anda membuat cluster Dataproc menggunakan akun layanan VM default, cluster tersebut memiliki peran Dataproc Worker, yang memungkinkan pelacakan asal data. Anda tidak perlu melakukan tindakan tambahan apa pun.

Namun, jika Anda membuat cluster Dataproc yang menggunakan akun layanan kustom, untuk mengaktifkan silsilah data di cluster, Anda harus memberikan peran yang diperlukan ke akun layanan kustom seperti yang dijelaskan dalam paragraf berikut.

Untuk mendapatkan izin yang Anda perlukan untuk menggunakan silsilah data dengan Dataproc, minta administrator untuk memberi Anda peran IAM berikut di akun layanan kustom cluster Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian 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 Spark

Anda dapat mengaktifkan asal data Spark di tingkat project atau cluster.

Mengaktifkan silsilah data Spark di level project

Setelah Anda mengaktifkan silsilah data Spark di tingkat project, tugas Spark berikutnya yang berjalan di cluster Dataproc dalam project akan mengaktifkan silsilah data Spark.

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

Kunci Nilai
DATAPROC_LINEAGE_ENABLED true
DATAPROC_CLUSTER_SCOPES https://www.googleapis.com/auth/cloud-platform
Menetapkan cakupan akses VM ini hanya diperlukan untuk cluster versi image 2.0. Fitur ini otomatis diaktifkan di cluster versi image 2.1 dan yang lebih baru.

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

Mengaktifkan silsilah data Spark di tingkat cluster

Jika Anda mengaktifkan silsilah data Spark saat membuat cluster, tugas Spark yang didukung yang berjalan di cluster Dataproc akan mengaktifkan silsilah data Spark. Setelan ini menggantikan setelan silsilah data Spark di tingkat project: jika silsilah data Spark dinonaktifkan di tingkat project, tetapi diaktifkan di tingkat cluster, tingkat cluster akan diutamakan, dan tugas Spark yang didukung yang berjalan di cluster akan mengaktifkan silsilah data.

Untuk mengaktifkan asal data Spark di cluster, buat cluster Dataproc dengan properti cluster dataproc:dataproc.lineage.enabled yang ditetapkan ke true.

Contoh gcloud CLI:

gcloud dataproc clusters create CLUSTER_NAME \
    --project PROJECT_ID \
    --region REGION \
    --properties 'dataproc:dataproc.lineage.enabled=true'

Anda dapat menonaktifkan asal-usul data Spark di cluster dengan menyetel properti dataproc:dataproc.lineage.enabled ke false saat Anda membuat cluster.

  • Menonaktifkan silsilah data pada cluster: Untuk membuat cluster dengan silsilah dinonaktifkan, tetapkan dataproc:dataproc.lineage.enabled=false. Setelah pembuatan cluster, Anda tidak dapat menonaktifkan silsilah data Spark di cluster. Untuk menonaktifkan silsilah data Spark di cluster yang ada, Anda dapat membuat ulang cluster dengan properti dataproc:dataproc.lineage.enabled yang ditetapkan ke false.

  • Menetapkan cakupan pada cluster versi image 2.0: Cakupan akses VM cluster Dataproc cloud-platform diperlukan untuk silsilah data Spark. Cluster versi image Dataproc yang dibuat dengan versi image 2.1 dan yang lebih baru telah mengaktifkan cloud-platform. Jika Anda menentukan versi image Dataproc 2.0 saat membuat cluster, tetapkan cakupan ke cloud-platform.

Menonaktifkan silsilah data Spark pada tugas

Jika silsilah data Spark diaktifkan pada cluster, Anda dapat menonaktifkan silsilah data Spark pada tugas dengan meneruskan properti spark.extraListeners dengan nilai kosong ("") saat Anda mengirimkan tugas.

gcloud dataproc jobs submit spark \
    --cluster=CLUSTER_NAME \
    --project PROJECT_ID \
    --region REGION \
    --class CLASS \
    --jars=gs://APPLICATION_BUCKET/spark-application.jar \
    --properties=spark.extraListeners=''

Mengirimkan tugas Spark

Saat Anda mengirimkan tugas Spark yang didukung di cluster Dataproc yang dibuat dengan mengaktifkan silsilah data Spark, Dataproc akan merekam dan melaporkan informasi silsilah data ke Data Lineage API.

gcloud dataproc jobs submit spark \
    --cluster=CLUSTER_NAME \
    --project PROJECT_ID \
    --region REGION \
    --class CLASS \
    --jars=gs://APPLICATION_BUCKET/spark-application.jar \
    --properties=spark.openlineage.namespace=CUSTOM_NAMESPACE,spark.openlineage.appName=CUSTOM_APPNAME

Catatan:

  • Menambahkan properti spark.openlineage.namespace dan spark.openlineage.appName, yang digunakan untuk mengidentifikasi tugas secara unik, bersifat opsional. Jika Anda tidak menambahkan properti ini, Dataproc akan menggunakan nilai default berikut:
    • Nilai default untuk spark.openlineage.namespace: PROJECT_ID
    • Nilai default untuk spark.openlineage.appName: spark.app.name

Melihat silsilah di Dataplex Universal Catalog

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

Contoh kode PySpark:

Tugas PySpark berikut membaca data dari tabel BigQuery publik, lalu menulis output ke tabel baru dalam set data BigQuery yang ada. Bucket ini menggunakan bucket Cloud Storage untuk penyimpanan sementara.

#!/usr/bin/env python

from pyspark.sql import SparkSession
import sys

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

bucket = 'gs://BUCKET`
spark.conf.set('temporaryCloudStorageBucket', bucket)

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')

destination_table = 'PROJECT_ID:DATASET.TABLE'
word_count.write.format('bigquery') \
  .option('table', destination_table) \
  .save()

Lakukan penggantian berikut:

  • BUCKET: Nama bucket Cloud Storage yang ada

  • PROJECT_ID, DATASET, dan TABLE: ID project, nama set data BigQuery yang ada, dan nama tabel baru yang akan dibuat di set data (tabel tidak boleh ada)

Anda dapat melihat grafik silsilah di UI Dataplex Universal Catalog.

Contoh grafik silsilah

Langkah berikutnya