Dokumen ini menjelaskan cara mengaktifkan silsilah data untuk tugas Managed Service untuk Apache Spark di tingkat project atau cluster.
Silsilah data adalah fitur Knowledge Catalog yang memungkinkan Anda melacak bagaimana data bergerak melalui sistem: dari mana data berasal, tempat data diteruskan, dan transformasi yang diterapkan pada data.
Silsilah data tersedia untuk semua tugas Managed Service untuk Apache Spark kecuali tugas streaming SparkR dan Spark, serta mendukung sumber data BigQuery dan Cloud Storage. Fitur ini disertakan dengan versi image Managed Service untuk Apache Spark 2.0.74+, 2.1.22+, 2.2.50+, 2.3.1+, dan 3.0.
Setelah Anda mengaktifkan fitur ini di cluster Managed Service untuk Apache Spark, Managed Service untuk Apache Spark tugas Spark akan menangkap peristiwa silsilah data dan memublikasikannya ke Knowledge Catalog Data Lineage API. Managed Service untuk Apache Spark terintegrasi dengan Data Lineage API melalui OpenLineage, menggunakan plugin OpenLineage Spark.
Anda dapat mengakses informasi silsilah data melalui Knowledge Catalog, menggunakan hal berikut:
Sebelum memulai
Di Google Cloud konsol, di halaman pemilih project, pilih project yang berisi cluster Managed Service untuk Apache Spark yang silsilahnya ingin Anda lacak.
Aktifkan Data Lineage API.
Perubahan silsilah data Spark yang akan datang Lihat catatan rilis Managed Service untuk Apache Spark 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 Managed Service untuk Apache Spark menggunakan
akun layanan VM default,
cluster tersebut akan memiliki peran Managed Service for Apache Spark Worker, yang mengaktifkan silsilah data. Tidak ada tindakan tambahan yang diperlukan.
Namun, jika Anda membuat cluster Managed Service untuk Apache Spark yang menggunakan akun layanan kustom, untuk mengaktifkan silsilah data di cluster, Anda harus memberikan peran yang diperlukan ke akun layanan kustom seperti yang dijelaskan di paragraf berikut.
Untuk mendapatkan izin yang Anda perlukan untuk menggunakan silsilah data dengan Managed Service untuk Apache Spark, minta administrator untuk memberi Anda peran IAM berikut di akun layanan kustom cluster Anda:
-
Berikan salah satu peran berikut:
- Managed Service for Apache Spark Worker (
roles/dataproc.worker) - Data Lineage Editor (
roles/datalineage.editor) - Data Lineage Producer (
roles/datalineage.producer) - Data Lineage Administrator (
roles/datalineage.admin)
- Managed Service for Apache Spark Worker (
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 silsilah data Spark di tingkat project atau cluster.
Mengaktifkan silsilah data Spark di tingkat project
Setelah Anda mengaktifkan silsilah data Spark di tingkat project, tugas Spark berikutnya yang berjalan di cluster Managed Service untuk Apache Spark 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-platformMenetapkan cakupan akses VM ini hanya diperlukan untuk cluster versi image 2.0. Cakupan ini otomatis ditetapkan pada 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 Managed Service untuk Apache Spark akan mengaktifkan silsilah data Spark. Setelan ini mengganti 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 silsilah data Spark di cluster,
buat cluster Managed Service untuk Apache Spark
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 silsilah data Spark di cluster dengan menetapkan properti dataproc:dataproc.lineage.enabled ke false saat Anda membuat cluster.
Menonaktifkan silsilah data di cluster: Untuk membuat cluster dengan silsilah data 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 propertidataproc:dataproc.lineage.enabledyang ditetapkan kefalse.Menetapkan cakupan pada cluster versi image 2.0: Cluster Managed Service untuk Apache Spark akses VM
cloud-platformcakupan diperlukan untuk silsilah data Spark. Cluster versi image Managed Service untuk Apache Spark yang dibuat dengan versi image2.1dan yang lebih baru telah mengaktifkancloud-platform. Jika Anda menentukan versi image Managed Service untuk Apache Spark2.0saat membuat cluster, tetapkan cakupan kecloud-platform.
Menonaktifkan silsilah data Spark pada tugas
Jika silsilah data Spark diaktifkan di 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 Managed Service untuk Apache Spark yang dibuat dengan silsilah data Spark diaktifkan, Managed Service untuk Apache Spark akan menangkap 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_APPNAMECatatan:
- Menambahkan properti
spark.openlineage.namespacedanspark.openlineage.appName, yang digunakan untuk mengidentifikasi tugas secara unik, bersifat opsional. Jika Anda tidak menambahkan properti ini, Managed Service untuk Apache Spark akan menggunakan nilai default berikut:- Nilai default untuk
spark.openlineage.namespace: PROJECT_ID - Nilai default untuk
spark.openlineage.appName:spark.app.name
- Nilai default untuk
Melihat silsilah data di Knowledge Catalog
Grafik silsilah data menampilkan hubungan antara resource project Anda dan proses yang membuatnya. Anda dapat melihat informasi silsilah data di Google Cloud konsol, 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 tabel baru dalam set data BigQuery yang ada. Tugas 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: project ID, nama set data BigQuery yang ada, dan nama tabel baru yang akan dibuat dalam set data (tabel tidak boleh ada)
Anda dapat melihat grafik silsilah data di UI Knowledge Catalog.
Langkah berikutnya
- Pelajari lebih lanjut tentang silsilah data.