Dokumen ini menunjukkan cara mengaktifkan Lightning Engine untuk mempercepat workload batch dan sesi interaktif Managed Service untuk Apache Spark.
Ringkasan
Lightning Engine adalah akselerator kueri berperforma tinggi yang didukung oleh mesin pengoptimalan multi-lapisan yang menjalankan teknik pengoptimalan umum, seperti pengoptimalan kueri dan eksekusi, serta pengoptimalan yang diseleksi di lapisan sistem file dan konektor akses data.
Seperti yang ditunjukkan dalam ilustrasi berikut, Lightning Engine mempercepat performa eksekusi kueri Spark pada workload mirip TPC-H (ukuran set data 10 TB).
Untuk mengetahui informasi selengkapnya: lihat Memperkenalkan Lightning Engine — performa Apache Spark generasi berikutnya.
Ketersediaan Lightning Engine
Lightning Engine dan Native Query Execution tersedia untuk digunakan dengan runtime Managed Service untuk Apache Spark
2.3. Lightning Engine dan Native Query Execution tidak tersedia di runtime3.0.Lightning Engine hanya tersedia dengan paket harga premium Managed Service untuk Apache Spark.
Workload batch: Lightning Engine otomatis diaktifkan untuk workload batch di paket premium. Anda tidak perlu melakukan tindakan apa pun.
Sesi interaktif: Lightning Engine tidak diaktifkan secara default untuk sesi interaktif. Untuk mengaktifkannya, lihat Mengaktifkan Lightning Engine.
Profil runtime (template sesi): Saat Anda membuat profil runtime di konsol Google Cloud , paket Premium dan Aktifkan Lightning Engine untuk mempercepat performa dipilih secara default. Saat Anda membuat template sesi menggunakan Google Cloud CLI atau Dataproc API, Lightning Engine tidak diaktifkan secara default. Untuk mengaktifkan atau mengonfigurasinya, lihat Mengaktifkan Lightning Engine.
Aktifkan Lightning Engine
Bagian berikut menunjukkan cara mengaktifkan Lightning Engine pada workload batch, profil runtime (template sesi), dan sesi interaktif Managed Service untuk Apache Spark.
Workload batch
Mengaktifkan Lightning Engine pada workload batch
Anda dapat menggunakan konsol Google Cloud , Google Cloud CLI, atau Dataproc API untuk mengaktifkan Lightning Engine pada workload batch.
Konsol
Gunakan konsol Google Cloud untuk mengaktifkan Lightning Engine pada workload batch.
Di konsol Google Cloud , buka halaman Jobs Managed Service for Apache Spark:
Klik Submit job untuk membuka halaman Submit a job.
Di bagian Select compute type for job, pastikan Serverless Spark dipilih.
Di bagian Serverless job details:
- Pilih Runtime profile (atau pertahankan Default service configuration untuk region Anda), lalu klik Configure di kartu Summary (atau klik Create new profile di menu Runtime profile) untuk membuka panel konfigurasi profil runtime.
Paket: Pilih Premium. Tindakan ini akan otomatis mengaktifkan dan mencentang Enable Lightning Engine to accelerate performance.
Saat Anda memilih paket premium, paket komputasi driver dan eksekutor ditetapkan ke
Premium. Setelan komputasi paket premium yang ditetapkan secara otomatis ini tidak dapat diganti untuk batch yang menggunakan runtime sebelum3.0.Konfigurasi tambahan:
- Runtime configuration: Klik Edit, pilih
2.3untuk Spark runtime version, lalu klik Save. - Executor and driver configuration: Opsional: Klik Edit untuk mengonfigurasi Driver disk dan Executor disk ke Premium (SSD) atau biarkan pada nilai default Standard (HDD), lalu klik Save. Jika memilih paket disk premium, Anda harus memilih ukuran disk. Untuk mengetahui informasi selengkapnya, lihat properti alokasi resource.
- Runtime configuration: Klik Edit, pilih
Klik Gunakan konfigurasi (atau Simpan profil baru).
Di bagian Job execution and properties, di bagian Spark properties (atau di panel konfigurasi profil runtime di bagian Additional configuration > Other customizations > Spark properties), klik Add property (opsional) dan masukkan pasangan Key (nama properti) dan Value berikut jika Anda ingin memilih runtime Native Query Execution:
Kunci Nilai spark.dataproc.lightningEngine.runtimenative Isi Files and artifacts dan setelan workload batch lainnya di halaman Submit a job. Lihat Mengirimkan workload batch Spark.
Klik Submit untuk menjalankan workload batch Spark.
gcloud
Tetapkan flag perintah gcloud dataproc batches submit spark gcloud CLI berikut untuk mengaktifkan Lightning Engine pada workload batch.
gcloud dataproc batches submit spark \ --project=PROJECT_ID \ --region=REGION \ --version=2.3 \ --properties=dataproc.tier=premium \ OTHER_FLAGS_AS_NEEDED
Catatan:
- PROJECT_ID: Project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Dashboard konsol Google Cloud .
- REGION: Region Compute Engine yang tersedia untuk menjalankan workload.
--properties=dataproc.tier=premium. Menetapkan paket premium akan otomatis menetapkan properti berikut pada workload batch:spark.dataproc.engine=lightningEnginememilih Lightning Engine untuk workload batch.spark.dataproc.driver.compute.tierdanspark.dataproc.executor.compute.tierditetapkan kepremium(lihat properti alokasi resource). Setelan komputasi paket premium yang ditetapkan secara otomatis ini tidak dapat diganti untuk batch yang menggunakan runtime sebelum3.0.
Properti lainnya
Native Query Engine:
spark.dataproc.lightningEngine.runtime=nativeTambahkan properti ini jika Anda ingin memilih runtime Native Query Execution.Tingkat dan ukuran disk: Secara default, ukuran disk driver dan executor ditetapkan ke tingkat dan ukuran
standard. Anda dapat menambahkan properti untuk memilih tingkat dan ukuran diskpremium(dalam kelipatan375 GiB).
Untuk mengetahui informasi selengkapnya, lihat properti alokasi resource.
OTHER_FLAGS_AS_NEEDED: Lihat Mengirimkan workload batch Spark.
API
Untuk mengaktifkan Lightning Engine pada workload batch, sebagai bagian dari permintaan batches.create Anda:
- Tetapkan RuntimeConfig.version
ke
2.3. Tambahkan "dataproc.tier":"premium" ke RuntimeConfig.properties Menetapkan paket premium akan otomatis menetapkan properti berikut pada workload batch:
spark.dataproc.engine=lightningEnginememilih Lightning Engine untuk workload batch.spark.dataproc.driver.compute.tierdanspark.dataproc.executor.compute.tierditetapkan kepremium(lihat properti alokasi resource). Setelan komputasi paket premium yang ditetapkan secara otomatis ini tidak dapat diganti untuk batch yang menggunakan runtime sebelum3.0.
RuntimeConfig.properties lainnya:
Native Query Engine:
spark.dataproc.lightningEngine.runtime:native. Tambahkan properti ini jika Anda ingin memilih runtime Native Query Execution.Tingkat dan ukuran disk: Secara default, ukuran disk driver dan executor ditetapkan ke tingkat dan ukuran
standard. Anda dapat menambahkan properti untuk memilih tingkat dan ukuranpremium(dalam kelipatan375 GiB).
Untuk mengetahui informasi selengkapnya, lihat properti alokasi resource.
Lihat Mengirimkan workload batch Spark untuk menetapkan kolom API workload batch lainnya.
Profil runtime
Mengaktifkan Lightning Engine di profil runtime (template sesi)
Anda dapat menggunakan konsol Google Cloud , Google Cloud CLI, atau Dataproc API untuk mengaktifkan Lightning Engine di profil runtime (template sesi) untuk sesi Jupyter atau Spark Connect.
Konsol
Gunakan konsol Google Cloud untuk mengaktifkan Lightning Engine di profil runtime (template sesi):
Di konsol Google Cloud , buka halaman Serverless Runtime Profiles Managed Service untuk Apache Spark:
Klik Create untuk membuka halaman Create a runtime profile.
Pilih dan isi kolom berikut:
Tier: pastikan Premium (default) dipilih, dan pastikan Enable Lightning Engine to accelerate performance (dipilih secara default, yang menetapkan
spark.dataproc.engine=lightningEngine) dipilih.Konfigurasi tambahan: konfigurasikan setelan properti runtime dan Spark berikut:
Runtime configuration: klik Edit dan pastikan Spark runtime version ditetapkan ke
2.3, lalu klik Save.Penyesuaian lainnya: (opsional) untuk memilih runtime Native Query Execution, klik Edit, klik Add property di bagian Spark properties, masukkan pasangan Key (nama properti) dan Value berikut, lalu klik Save:
Kunci Nilai spark.dataproc.lightningEngine.runtimenative
Isi, pilih, atau konfirmasi setelan profil runtime lainnya. Untuk mengetahui informasi selengkapnya tentang setelan profil runtime, lihat Membuat profil runtime.
Klik Create.
gcloud
Anda tidak dapat langsung membuat template sesi Managed Service untuk Apache Spark (profil runtime) menggunakan gcloud CLI. Sebagai gantinya, Anda dapat menggunakan
perintah gcloud beta dataproc session-templates import untuk mengimpor
template sesi yang ada, mengedit template yang diimpor untuk mengaktifkan
Lightning Engine dan secara opsional runtime Kueri Native, lalu mengekspor
template yang diedit menggunakan perintah
gcloud beta dataproc session-templates export.
API
Untuk mengaktifkan Lightning Engine pada template sesi (profil runtime), sebagai bagian dari permintaan sessionTemplates.create Anda:
- Tetapkan RuntimeConfig.version
ke
2.3. - Tambahkan "dataproc.tier":"premium" dan "spark.dataproc.engine":"lightningEngine" ke RuntimeConfig.properties.
RuntimeConfig.properties lainnya:
- Native Query Engine:
spark.dataproc.lightningEngine.runtime:native: Tambahkan properti ini ke RuntimeConfig.properties untuk memilih runtime Native Query Execution.
Untuk mengetahui informasi selengkapnya tentang cara menetapkan kolom API template sesi lainnya, lihat Membuat profil runtime (template sesi).
Sesi interaktif
Mengaktifkan Lightning Engine di sesi interaktif
Anda dapat menggunakan Google Cloud CLI atau Dataproc API untuk mengaktifkan Lightning Engine di sesi interaktif Managed Service untuk Apache Spark. Anda juga dapat mengaktifkan Lightning Engine dalam sesi interaktif di notebook BigQuery Studio.
gcloud
Tetapkan flag perintah gcloud beta dataproc sessions create spark gcloud CLI berikut untuk mengaktifkan Lightning Engine pada sesi interaktif.
gcloud beta dataproc sessions create spark \ --project=PROJECT_ID \ --location=REGION \ --version=2.3 \ --properties=dataproc.tier=premium,spark.dataproc.engine=lightningEngine \ OTHER_FLAGS_AS_NEEDED
Catatan:
- PROJECT_ID: Project ID Google Cloud Anda. Project ID tercantum di bagian Project info di Dashboard konsol Google Cloud .
- REGION: Region Compute Engine yang tersedia untuk menjalankan workload.
--properties=dataproc.tier=premium,spark.dataproc.engine=lightningEngine. Properti ini mengaktifkan Lightning Engine pada sesi.Properti lainnya:
- Native Query Engine:
spark.dataproc.lightningEngine.runtime=native: Tambahkan properti ini untuk memilih runtime Native Query Execution.
- Native Query Engine:
OTHER_FLAGS_AS_NEEDED: Lihat Membuat sesi interaktif.
API
Untuk mengaktifkan Lightning Engine pada sesi, sebagai bagian dari permintaan sessions.create Anda:
- Tetapkan RuntimeConfig.version
ke
2.3. - Tambahkan "dataproc.tier":"premium" dan "spark.dataproc.engine":"lightningEngine" ke RuntimeConfig.properties.
RuntimeConfig.properties Lainnya:
- Native Query Engine:
spark.dataproc.lightningEngine.runtime:native: Tambahkan properti ini ke RuntimeConfig.properties jika Anda ingin memilih runtime Native Query Execution.
Lihat Membuat sesi interaktif untuk menetapkan kolom API template sesi lainnya.
Notebook BigQuery
Anda dapat mengaktifkan Lightning Engine saat membuat sesi di notebook PySpark BigQuery Studio.
from google.cloud.dataproc_spark_connect import DataprocSparkSession
from google.cloud.dataproc_v1 import Session
session = Session()
# Enable Lightning Engine.
session.runtime_config.properties["version"] = "2.3"
session.runtime_config.properties["dataproc.tier"] = "premium"
session.runtime_config.properties["spark.dataproc.engine"] = "lightningEngine"
# Enable THE Native Query Execution runtime.
session.runtime_config.properties["spark.dataproc.lightningEngine.runtime"] = "native"
# Create the Spark session.
spark = (
DataprocSparkSession.builder
.appName("APP_NAME")
.dataprocSessionConfig(session)
.getOrCreate())
# Add Spark application code here:
Memverifikasi setelan Lightning Engine
Anda dapat menggunakan konsol Google Cloud , Google Cloud CLI, atau Dataproc API untuk memverifikasi setelan Lightning Engine pada workload batch, profil runtime (template sesi), atau sesi interaktif.
Workload batch
Untuk memverifikasi bahwa tingkat batch ditetapkan ke
premiumdan mesin ditetapkan keLightning Engine:- Google Cloud console: Di halaman Jobs, pilih tab Serverless Spark untuk melihat kolom Tier untuk batch, dan klik Job ID batch untuk melihat setelan Tier dan Engine di tab Summary pada halaman Job details batch.
- gcloud CLI: Jalankan perintah
gcloud dataproc batches describe. - API: Mengeluarkan permintaan
batches.get.
Profil runtime
Untuk memverifikasi bahwa engine ditetapkan ke
Lightning Engineuntuk profil runtime (template sesi):Google Cloud console: Di halaman Serverless Runtime Profiles, klik nama profil runtime untuk melihat setelannya di halaman detail profil runtime.
gcloud CLI: Jalankan perintah
gcloud beta dataproc session-templates describe.API: Mengeluarkan permintaan
sessionTemplates.get.
Sesi interaktif
Untuk memverifikasi bahwa engine ditetapkan ke
Lightning Engineuntuk sesi interaktif:Google Cloud console: Di halaman Sessions, lihat kolom Engine untuk sesi tersebut. Anda dapat mengklik ID Sesi untuk melihat setelan ini di halaman detail sesi.
gcloud CLI: Jalankan perintah
gcloud beta dataproc sessions describe.API: Mengeluarkan permintaan
sessions.get.
Eksekusi Kueri Native
Native Query Execution (NQE) adalah fitur Lightning Engine opsional yang meningkatkan performa melalui implementasi native berdasarkan Apache Gluten dan Velox yang dirancang untuk hardware Google.
Runtime Native Query Execution mencakup manajemen memori terpadu untuk peralihan dinamis antara memori off-heap dan on-heap tanpa memerlukan perubahan pada konfigurasi Spark yang ada. NQE mencakup dukungan yang diperluas untuk operator, fungsi, dan jenis data Spark, serta kecerdasan untuk otomatis mengidentifikasi peluang penggunaan mesin native untuk operasi pushdown yang optimal.
Mengidentifikasi workload eksekusi kueri Native
Gunakan Native Query Execution dalam skenario berikut:
Spark Dataframe API, Spark Dataset API, dan kueri Spark SQL yang membaca data dari file Parquet dan ORC. Format file output tidak memengaruhi performa Native Query Execution.
Workload yang direkomendasikan oleh alat kualifikasi Native Query Execution.
Eksekusi kueri native tidak direkomendasikan untuk workload dengan input jenis data berikut:
- Byte: ORC dan Parquet
- Stempel waktu: ORC
- Struct, Array, Map: Parquet
Batasan Native Query Execution
Mengaktifkan Native Query Execution dalam skenario berikut dapat menyebabkan pengecualian, ketidaksesuaian Spark, atau fallback workload ke mesin Spark default.
Pengganti
Native Query Execution dalam eksekusi berikut dapat menyebabkan workload kembali ke mesin eksekusi Spark, sehingga mengakibatkan regresi atau kegagalan.
ANSI: Jika mode ANSI diaktifkan, eksekusi akan beralih kembali ke Spark.
Mode peka huruf besar/kecil: Native Query Execution hanya mendukung mode default Spark yang tidak peka huruf besar/kecil. Jika mode peka huruf besar/kecil diaktifkan, hasil yang salah dapat terjadi.
Pemindaian tabel berpartisi: Native Query Execution mendukung pemindaian tabel berpartisi hanya jika jalur berisi informasi partisi, jika tidak, workload akan kembali ke mesin eksekusi Spark.
Perilaku yang tidak kompatibel
Perilaku yang tidak kompatibel atau hasil yang salah dapat terjadi saat menggunakan eksekusi kueri Native dalam kasus berikut:
Fungsi JSON: Native Query Execution mendukung string yang diapit tanda petik ganda, bukan tanda petik tunggal. Hasil yang salah terjadi dengan tanda petik tunggal. Penggunaan "*" di jalur dengan fungsi
get_json_objectakan menampilkanNULL.Konfigurasi pembacaan Parquet:
- Eksekusi Kueri Native memperlakukan
spark.files.ignoreCorruptFilesseolah-olah ditetapkan ke nilaifalsedefault, meskipun ditetapkan ketrue. - Eksekusi Kueri Native mengabaikan
spark.sql.parquet.datetimeRebaseModeInRead, dan hanya menampilkan konten file Parquet. Perbedaan antara kalender hybrid lama (Julian Gregorian) dan kalender Gregorian Proleptik tidak dipertimbangkan. Hasil Spark dapat berbeda.
- Eksekusi Kueri Native memperlakukan
NaN: Tidak didukung. Hasil yang tidak terduga dapat terjadi, misalnya, saat menggunakanNaNdalam perbandingan numerik.Pembacaan kolom Spark: Error fatal dapat terjadi karena vektor kolom Spark tidak kompatibel dengan Native Query Execution.
Spill: Jika partisi shuffle ditetapkan ke jumlah yang besar, fitur spill-to-disk dapat memicu
OutOfMemoryException. Jika hal ini terjadi, mengurangi jumlah partisi dapat menghilangkan pengecualian ini.