Menjalankan kode PySpark di notebook BigQuery Studio
Anda dapat membuat sesi Spark di notebook BigQuery Studio untuk menggunakan kode PySpark guna menganalisis dan mentransformasi data dalam skala yang lebih besar. Dengan menggunakan integrasi terkelola ini, Anda dapat menambahkan paket Python secara dinamis dan memproses set data besar tanpa keluar dari lingkungan notebook.
Sebelum memulai
Jika Anda belum melakukannya, buat project Google Cloud dan bucket Cloud Storage.
Menyiapkan project
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Managed Service for Apache Spark, BigQuery, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Managed Service for Apache Spark, BigQuery, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Buat bucket Cloud Storage di project Anda jika Anda belum memiliki bucket yang dapat digunakan.
Menyiapkan notebook Anda
- Kredensial notebook: Secara default, sesi notebook Anda menggunakan kredensial pengguna Anda. Atau, aplikasi dapat menggunakan kredensial akun layanan sesi.
- Kredensial pengguna: Akun pengguna Anda harus memiliki peran Identity and Access Management
berikut:
- Managed Service untuk Apache Spark Editor (peran
roles/dataproc.editor) - BigQuery Studio User (peran
roles/bigquery.studioUser) - Peran Service Account User (roles/iam.serviceAccountUser)
di akun layanan sesi.
Peran ini berisi izin
iam.serviceAccounts.actAsyang diperlukan untuk meniru akun layanan.
- Managed Service untuk Apache Spark Editor (peran
- Kredensial akun layanan: Jika Anda ingin menentukan kredensial akun layanan, bukan kredensial pengguna untuk sesi notebook, akun layanan sesi harus memiliki peran berikut:
- Kredensial pengguna: Akun pengguna Anda harus memiliki peran Identity and Access Management
berikut:
- Runtime notebook: Notebook Anda menggunakan runtime Gemini Enterprise Agent Platform default, kecuali jika Anda memilih runtime lain. Jika ingin menentukan runtime Anda sendiri, buat runtime dari halaman Runtime di konsol Google Cloud . Perhatikan bahwa saat menggunakan library NumPy, gunakan NumPy versi 1.26, yang didukung oleh Spark 3.5, di runtime notebook.
- Kredensial notebook: Secara default, sesi notebook Anda menggunakan kredensial pengguna Anda. Atau, aplikasi dapat menggunakan kredensial akun layanan sesi.
Harga
Untuk mengetahui informasi harga, lihat Harga runtime notebook BigQuery.
Membuka notebook Python di BigQuery Studio
Di konsol Google Cloud , buka halaman BigQuery.
Di bilah tab panel detail, klik panah di samping tanda +, lalu klik Notebook.
Membuat sesi Spark di notebook BigQuery Studio
Anda dapat menggunakan notebook Python BigQuery Studio untuk membuat sesi interaktif Spark Connect. Setiap notebook BigQuery Studio hanya dapat memiliki satu sesi Spark aktif yang terkait dengannya.
Anda dapat membuat sesi Spark di notebook Python BigQuery Studio dengan cara berikut:
- Mengonfigurasi dan membuat satu sesi di notebook.
- Konfigurasikan sesi Spark di
template sesi interaktif,
lalu gunakan template tersebut untuk mengonfigurasi dan membuat sesi di notebook.
BigQuery menyediakan fitur
Query using Sparkyang membantu Anda mulai membuat kode sesi template seperti yang dijelaskan di tab Sesi Spark template.
Sesi tunggal
Untuk membuat sesi Spark di notebook baru, lakukan hal berikut:
Di bilah tab panel editor, klik panah drop-down di samping tanda +, lalu klik Notebook.
Salin dan jalankan kode berikut di sel notebook untuk mengonfigurasi dan membuat sesi Spark dasar.
from google.cloud.dataproc_spark_connect import DataprocSparkSession
from google.cloud.dataproc_v1 import Session
import pyspark.sql.functions as f
session = Session()
# Create the Spark session.
spark = (
DataprocSparkSession.builder
.appName("APP_NAME")
.dataprocSessionConfig(session)
.getOrCreate()
)
Ganti kode berikut:
- APP_NAME: Nama opsional untuk sesi Anda.
- Setelan Sesi Opsional: Anda dapat menambahkan setelan
SessionManaged Service untuk Apache Spark API untuk menyesuaikan sesi Anda. Berikut beberapa contohnya:RuntimeConfig:
session.runtime_config.properties={spark.property.key1:VALUE_1,...,spark.property.keyN:VALUE_N}session.runtime_config.container_image = path/to/container/image
EnvironmentConfig:
- session.environment_config.execution_config.subnetwork_uri = "SUBNET_NAME"
session.environment_config.execution_config.ttl = {"seconds": VALUE}session.environment_config.execution_config.service_account = SERVICE_ACCOUNT
Sesi Spark dengan template
Anda dapat memasukkan dan menjalankan kode di sel notebook untuk membuat sesi Spark berdasarkan template sesi yang ada.
Setiap setelan konfigurasi session yang Anda berikan dalam kode notebook akan menggantikan setelan yang sama yang ditetapkan dalam template sesi.
Untuk memulai dengan cepat, gunakan template Query using Spark
untuk mengisi otomatis notebook Anda dengan kode template sesi Spark:
- Di bilah tab panel editor, klik
panah drop-down di samping tanda +, lalu klik
Notebook.
- Di bagian Start with a template, klik Query using Spark, lalu klik
Use template untuk menyisipkan kode di notebook Anda.
- Tentukan variabel seperti yang dijelaskan dalam Catatan.
- Anda dapat menghapus sel kode contoh tambahan yang disisipkan di notebook.
from google.cloud.dataproc_spark_connect import DataprocSparkSession
from google.cloud.dataproc_v1 import Session
session = Session()
project_id = "PROJECT_ID"
location = "LOCATION"
# Configure the session with an existing session template.
session_template = "SESSION_TEMPLATE"
session.session_template = f"projects/{project_id}/locations/{location}/sessionTemplates/{session_template}"
# Create the Spark session.
spark = (
DataprocSparkSession.builder
.appName("APP_NAME")
.dataprocSessionConfig(session)
.getOrCreate()
)
- PROJECT_ID: Project ID Anda, yang tercantum di bagian Project info di Google Cloud dasbor konsol.
- LOCATION: Region Compute Engine tempat sesi notebook Anda akan dijalankan. Jika tidak diberikan, region VM yang membuat notebook akan digunakan.
SESSION_TEMPLATE: Nama template sesi interaktif yang ada. Setelan konfigurasi sesi diperoleh dari template. Template juga harus menentukan setelan berikut:
- Versi runtime
2.3+ Jenis notebook:
Spark ConnectContoh:
- Versi runtime
APP_NAME: Nama opsional untuk sesi Anda.
Menulis dan menjalankan kode PySpark di notebook BigQuery Studio
Setelah membuat sesi Spark di notebook, gunakan sesi tersebut untuk menjalankan kode notebook Spark di notebook.
Dukungan Spark Connect PySpark API: Sesi notebook Spark Connect Anda mendukung sebagian besar PySpark API, termasuk DataFrame, Functions, dan Column, tetapi tidak mendukung SparkContext dan RDD serta PySpark API lainnya. Untuk mengetahui informasi selengkapnya, lihat Yang didukung di Spark 3.5.
Penulisan langsung notebook Spark Connect: Sesi Spark di notebook BigQuery Studio melakukan pra-konfigurasi konektor Spark BigQuery untuk melakukan penulisan data LANGSUNG. Metode penulisan DIRECT menggunakan BigQuery Storage Write API, yang menulis data langsung ke BigQuery; metode penulisan INDIRECT, yang merupakan default untuk batch Managed Service untuk Apache Spark, menulis data ke bucket Cloud Storage perantara, lalu menulis data ke BigQuery (untuk mengetahui informasi selengkapnya tentang penulisan INDIRECT, lihat Membaca dan menulis data dari dan ke BigQuery).
API khusus Managed Service untuk Apache Spark: Managed Service untuk Apache Spark menyederhanakan penambahan paket PyPI secara dinamis ke sesi Spark Anda dengan memperluas metode addArtifacts. Anda dapat menentukan daftar dalam format version-scheme, (mirip dengan pip install). Tindakan ini akan menginstruksikan server Spark Connect untuk menginstal paket dan dependensinya di semua node cluster, sehingga tersedia bagi worker untuk UDF Anda.
Contoh yang menginstal versi textdistance yang ditentukan dan library random2 terbaru yang kompatibel di cluster untuk memungkinkan UDF yang menggunakan textdistance dan random2 berjalan di worker node.
spark.addArtifacts("textdistance==4.6.1", "random2", pypi=True)
Bantuan kode notebook: Notebook BigQuery Studio memberikan bantuan kode saat Anda mengarahkan kursor ke nama class atau metode, dan memberikan bantuan penyelesaian kode saat Anda memasukkan kode.
Dalam contoh berikut, memasukkan DataprocSparkSession dan menahan
pointer di atas nama class ini akan menampilkan pelengkapan kode
dan bantuan dokumentasi.
Contoh PySpark notebook BigQuery Studio
Bagian ini memberikan contoh notebook Python BigQuery Studio dengan kode PySpark untuk melakukan tugas-tugas berikut:
- Menjalankan jumlah kata terhadap set data Shakespeare publik.
- Buat tabel Iceberg dengan metadata yang disimpan di katalog runtime Lakehouse.
Wordcount
Contoh PySpark berikut membuat sesi Spark, lalu menghitung kemunculan kata dalam set data bigquery-public-data.samples.shakespeare publik.
# Basic wordcount example
from google.cloud.dataproc_spark_connect import DataprocSparkSession
from google.cloud.dataproc_v1 import Session
import pyspark.sql.functions as f
session = Session()
# Create the Spark session.
spark = (
DataprocSparkSession.builder
.appName("APP_NAME")
.dataprocSessionConfig(session)
.getOrCreate()
)
# Run a wordcount on the public Shakespeare dataset.
df = spark.read.format("bigquery").option("table", "bigquery-public-data.samples.shakespeare").load()
words_df = df.select(f.explode(f.split(f.col("word"), " ")).alias("word"))
word_counts_df = words_df.filter(f.col("word") != "").groupBy("word").agg(f.count("*").alias("count")).orderBy("word")
word_counts_df.show()
Ganti kode berikut:
- APP_NAME: Nama opsional untuk sesi Anda.
Output:
Output sel mencantumkan sampel output wordcount. Untuk melihat detail sesi interaktif di konsol Google Cloud , klik link Interactive Session Detail View. Panel detail Spark akan terbuka dan menyediakan tab untuk Logs, Executors, SQL, dan Jobs (termasuk linimasa peristiwa). Untuk memantau sesi Spark, klik View Spark UI di halaman detail sesi.
Interactive Session Detail View: LINK +------------+-----+ | word|count| +------------+-----+ | '| 42| | ''All| 1| | ''Among| 1| | ''And| 1| | ''But| 1| | ''Gamut'| 1| | ''How| 1| | ''Lo| 1| | ''Look| 1| | ''My| 1| | ''Now| 1| | ''O| 1| | ''Od's| 1| | ''The| 1| | ''Tis| 4| | ''When| 1| | ''tis| 1| | ''twas| 1| | 'A| 10| |'ARTEMIDORUS| 1| +------------+-----+ only showing top 20 rows
Tabel Iceberg
Menjalankan kode PySpark untuk membuat tabel Iceberg dengan metadata katalog runtime Lakehouse
Kode contoh berikut membuat sample_iceberg_table dengan metadata tabel yang disimpan di katalog runtime Lakehouse, lalu membuat kueri tabel.
from google.cloud.dataproc_spark_connect import DataprocSparkSession
from google.cloud.dataproc_v1 import Session
# Create the Dataproc Serverless session.
session = Session()
# Set the session configuration for BigLake Metastore with the Iceberg environment.
project_id = "PROJECT_ID"
region = "REGION"
subnet_name = "SUBNET_NAME"
location = "LOCATION"
session.environment_config.execution_config.subnetwork_uri = f"{subnet_name}"
warehouse_dir = "gs://BUCKET/WAREHOUSE_DIRECTORY"
catalog = "CATALOG"
namespace = "NAMESPACE"
session.runtime_config.properties[f"spark.sql.catalog.{catalog}"] = "org.apache.iceberg.spark.SparkCatalog"
session.runtime_config.properties[f"spark.sql.catalog.{catalog}.catalog-impl"] = "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog"
session.runtime_config.properties[f"spark.sql.catalog.{catalog}.gcp_project"] = f"{project_id}"
session.runtime_config.properties[f"spark.sql.catalog.{catalog}.gcp_location"] = f"{location}"
session.runtime_config.properties[f"spark.sql.catalog.{catalog}.warehouse"] = f"{warehouse_dir}"
# Create the Spark Connect session.
spark = (
DataprocSparkSession.builder
.appName("APP_NAME")
.dataprocSessionConfig(session)
.getOrCreate()
)
# Create the namespace in BigQuery.
spark.sql(f"USE `{catalog}`;")
spark.sql(f"CREATE NAMESPACE IF NOT EXISTS `{namespace}`;")
spark.sql(f"USE `{namespace}`;")
# Create the Iceberg table.
spark.sql("DROP TABLE IF EXISTS `sample_iceberg_table`");
spark.sql("CREATE TABLE sample_iceberg_table (id int, data string) USING ICEBERG;")
spark.sql("DESCRIBE sample_iceberg_table;")
# Insert table data and query the table.
spark.sql("INSERT INTO sample_iceberg_table VALUES (1, \"first row\");")
# Alter table, then query and display table data and schema.
spark.sql("ALTER TABLE sample_iceberg_table ADD COLUMNS (newDoubleCol double);")
spark.sql("DESCRIBE sample_iceberg_table;")
df = spark.sql("SELECT * FROM sample_iceberg_table")
df.show()
df.printSchema()
Catatan:
- PROJECT_ID: Project ID Anda, yang tercantum di bagian Project info di Google Cloud dasbor konsol.
- REGION dan SUBNET_NAME: Tentukan region Compute Engine dan nama subnet di region sesi. Managed Service untuk Apache Spark mengaktifkan Akses Google Pribadi (PGA) di subnet yang ditentukan.
- LOCATION:
BigQuery_metastore_config.locationdanspark.sql.catalog.{catalog}.gcp_locationdefault adalahUS, tetapi Anda dapat memilih lokasi BigQuery yang didukung. - BUCKET dan WAREHOUSE_DIRECTORY: Bucket Cloud Storage dan folder yang digunakan untuk direktori warehouse Iceberg.
- CATALOG dan NAMESPACE: Nama katalog Iceberg
dan namespace digabungkan untuk mengidentifikasi tabel Iceberg (
catalog.namespace.table_name). - APP_NAME: Nama opsional untuk sesi Anda.
Output sel mencantumkan sample_iceberg_table dengan kolom yang ditambahkan, dan menampilkan link ke halaman Detail Sesi Interaktif di konsol Google Cloud .
Panel detail Spark akan terbuka dan menyediakan tab untuk Logs, Executors, SQL, dan Jobs (termasuk linimasa peristiwa).
Anda dapat mengklik View Spark UI di halaman detail sesi untuk memantau sesi Spark Anda.
Interactive Session Detail View: LINK +---+---------+------------+ | id| data|newDoubleCol| +---+---------+------------+ | 1|first row| NULL| +---+---------+------------+ root |-- id: integer (nullable = true) |-- data: string (nullable = true) |-- newDoubleCol: double (nullable = true)
Melihat detail tabel di BigQuery
Lakukan langkah-langkah berikut untuk memeriksa detail tabel Iceberg di BigQuery:
Di konsol Google Cloud , buka halaman BigQuery.
Di panel resource project, klik project Anda, lalu klik namespace Anda untuk mencantumkan tabel
sample_iceberg_table. Klik tabel Details untuk melihat informasi Open Catalog Table Configuration.Format input dan output adalah format class
InputFormatdanOutputFormatHadoop standar yang digunakan Iceberg.
Contoh lain
Buat DataFrame (sdf) Spark dari DataFrame Pandas (df).
sdf = spark.createDataFrame(df)
sdf.show()
Menjalankan agregasi di Spark DataFrames.
from pyspark.sql import functions as f
sdf.groupby("segment").agg(
f.mean("total_spend_per_user").alias("avg_order_value"),
f.approx_count_distinct("user_id").alias("unique_customers")
).show()
Membaca dari BigQuery menggunakan konektor Spark-BigQuery.
spark.conf.set("viewsEnabled","true")
spark.conf.set("materializationDataset","my-bigquery-dataset")
sdf = spark.read.format('bigquery') \
.load(query)
Menulis kode Spark dengan Gemini Code Assist
Anda dapat meminta Gemini Code Assist untuk membuat kode PySpark di notebook Anda. Gemini Code Assist mengambil dan menggunakan tabel BigQuery dan Dataproc Metastore yang relevan beserta skemanya untuk menghasilkan respons kode.
Untuk membuat kode Gemini Code Assist di notebook Anda, lakukan hal berikut:
Sisipkan sel kode baru dengan mengklik + Code di toolbar. Sel kode baru akan menampilkan
Start coding or generate with AI. Klik Generate.Di editor Generate, masukkan perintah bahasa alami, lalu klik
enter. Pastikan untuk menyertakan kata kuncisparkataupysparkdalam perintah Anda.Contoh perintah:
create a spark dataframe from order_items and filter to orders created in 2024
Contoh output:
spark.read.format("bigquery").option("table", "sqlgen-testing.pysparkeval_ecommerce.order_items").load().filter("year(created_at) = 2024").createOrReplaceTempView("order_items") df = spark.sql("SELECT * FROM order_items")
Tips untuk pembuatan kode Gemini Code Assist
Agar Gemini Code Assist dapat mengambil tabel dan skema yang relevan, aktifkan sinkronisasi Data Catalog untuk instance Dataproc Metastore.
Pastikan akun pengguna Anda memiliki akses ke Data Catalog tabel kueri. Untuk melakukannya, tetapkan peran
DataCatalog.Viewer.
Mengakhiri sesi Spark
Anda dapat melakukan salah satu tindakan berikut untuk menghentikan sesi Spark Connect di notebook BigQuery Studio:
- Jalankan
spark.stop()di sel notebook. - Hentikan runtime di notebook:
- Klik pemilih runtime, lalu klik Manage sessions.
- Dalam dialog Active sessions, klik ikon hentikan, lalu
klik Terminate.
- Klik pemilih runtime, lalu klik Manage sessions.
Mengorkestrasi kode notebook BigQuery Studio
Anda dapat mengorkestrasi kode notebook BigQuery Studio dengan cara berikut:
Jadwalkan kode notebook dari konsol Google Cloud (berlaku harga notebook).
Menjalankan kode notebook sebagai workload batch (berlaku harga Managed Service untuk Apache Spark).
Menjadwalkan kode notebook dari konsol Google Cloud
Anda dapat menjadwalkan kode notebook dengan cara berikut:
- Jadwalkan notebook.
- Jika eksekusi kode notebook adalah bagian dari alur kerja, jadwalkan notebook sebagai bagian dari pipeline.
Menjalankan kode notebook sebagai workload batch
Selesaikan langkah-langkah berikut untuk menjalankan kode notebook BigQuery Studio sebagai workload batch.
Download kode notebook ke dalam file di terminal lokal atau di Cloud Shell.
Di konsol Google Cloud , di halaman BigQuery Studio, buka notebook di panel Explorer.
Untuk meluaskan panel menu, klik keyboard_arrow_down Aktifkan/nonaktifkan visibilitas header.
Klik File > Download, lalu klik Download.py.
Buat
requirements.txt.- Instal
pipreqsdi direktori tempat Anda menyimpan file.py.pip install pipreqs
Jalankan
pipreqsuntuk membuatrequirements.txt.pipreqs filename.py
Gunakan Google Cloud CLI untuk menyalin file
requirements.txtlokal ke bucket di Cloud Storage.gcloud storage cp requirements.txt gs://BUCKET/
- Instal
Perbarui kode sesi Spark dengan mengedit file
.pyyang didownload.Hapus atau jadikan sebagai komentar semua perintah skrip shell.
Hapus kode yang mengonfigurasi sesi Spark, lalu tentukan parameter konfigurasi sebagai parameter pengiriman workload batch. (lihat Mengirimkan workload batch Spark).
Contoh:
Hapus baris konfigurasi subnet sesi berikut dari kode:
session.environment_config.execution_config.subnetwork_uri = "{subnet_name}"Saat Anda menjalankan workload batch, gunakan flag
--subnetuntuk menentukan subnet.gcloud dataproc batches submit pyspark \ --subnet=SUBNET_NAME
Gunakan cuplikan kode pembuatan sesi yang sederhana.
Contoh kode notebook yang didownload sebelum penyederhanaan.
from google.cloud.dataproc_spark_connect import DataprocSparkSession from google.cloud.dataproc_v1 import Session
session = Session() spark = DataprocSparkSession \ .builder \ .appName("CustomSparkSession") .dataprocSessionConfig(session) \ .getOrCreate()
Kode workload batch setelah penyederhanaan.
from pyspark.sql import SparkSession
spark = SparkSession \ .builder \ .getOrCreate()
-
Lihat Mengirim workload batch Spark untuk mengetahui petunjuknya.
Pastikan untuk menyertakan flag --deps-bucket untuk mengarah ke bucket Cloud Storage yang berisi file
requirements.txtAnda.Contoh:
gcloud dataproc batches submit pyspark FILENAME.py \ --region=REGION \ --deps-bucket=BUCKET \ --version=2.3
Catatan:
- FILENAME: Nama file kode notebook yang didownload dan diedit.
- REGION: Region Compute Engine tempat cluster Anda berada.
- BUCKET Nama bucket Cloud Storage yang berisi file
requirements.txtAnda. --version: spark runtime version 2.3 dipilih untuk menjalankan workload batch.
Commit kode Anda.
- Setelah menguji kode workload batch, Anda dapat meng-commit file
.ipynbatau.pyke repositori menggunakan kliengit, seperti GitHub, GitLab, atau Bitbucket, sebagai bagian dari pipeline CI/CD Anda.
- Setelah menguji kode workload batch, Anda dapat meng-commit file
Menjadwalkan workload batch dengan Managed Service untuk Apache Airflow.
- Lihat Menjalankan workload Managed Service untuk Apache Spark dengan Managed Airflow untuk mengetahui petunjuknya.
Memecahkan masalah error notebook
Jika terjadi kegagalan dalam sel yang berisi kode Spark, Anda dapat memecahkan masalah error dengan mengklik link Detail Tampilan Sesi Interaktif di output sel (lihat Contoh tabel Wordcount dan Iceberg).
Masalah umum dan solusinya
Error: Runtime notebook
yang dibuat dengan Python versi 3.10 dapat menyebabkan error PYTHON_VERSION_MISMATCH
saat mencoba terhubung ke sesi Spark.
Solusi: Buat ulang runtime dengan Python versi 3.11.
Langkah berikutnya
- Demo video YouTube: Memanfaatkan kehebatan Apache Spark yang terintegrasi dengan BigQuery.
- Menggunakan katalog runtime Lakehouse dengan Managed Service untuk Apache Spark
- Menggunakan katalog runtime Lakehouse dengan Managed Service untuk Apache Spark