Kemampuan yang menentukan kemajuan belajar Spark setelah jalur ini adalah membaca sumber yang benar dengan cara yang benar. Dokumentasi Spark terstruktur rapi tetapi luas, dan konfigurasinya berjumlah ratusan entri yang tidak semuanya relevan. Topik ini menyusun peta sumber resmi beserta cara membacanya, ditutup dengan satu skrip yang menunjukkan bagaimana konfigurasi yang berlaku dapat diperiksa langsung dari sesi.
Menavigasi dokumentasi resmi#
Dokumentasi Spark di spark.apache.org/docs/latest tersusun sebagai sekelompok panduan berdasarkan komponen, dan hanya sebagian yang relevan bagi pengguna PySpark. Panduan yang menjadi tulang punggung jalur ini adalah Spark SQL dengan panduan pemrograman DataFrames, Structured Streaming, dan Spark Connect, sedangkan panduan RDD dan Scala-specific boleh dilewati pada tahap ini. Halaman konfigurasi adalah tempat paling sering dikunjungi, dan kebiasaan yang baik adalah mencari nama konfigurasi yang persis disebut dalam error atau rencana eksekusi, alih-alih membacanya dari awal.
Referensi API Python adalah halaman kedua yang paling sering dipakai, dan struktur yang perlu dihafal adalah pembagian modulnya, yaitu pyspark.sql untuk DataFrame, pyspark.sql.functions untuk fungsi kolom, pyspark.sql.streaming untuk streaming, pyspark.ml untuk pembelajaran mesin, dan pyspark.sql.connect untuk Spark Connect. Hampir semua pertanyaan sintaks selesai di halaman fungsi, dan membiasakan membaca bagian contoh di halaman API sering lebih cepat daripada mencari tutorial eksternal.
Dua halaman lagi layak ditandai sebagai rumah tetap. Halaman sql-performance-tuning memuat AQE dan hint join yang dibahas pada modul produksi, dan halaman sql-ref adalah peta sintaks SQL lengkap mulai dari DDL sampai fungsi, yang menautkan perintah ke penjelasannya. Ketika menemukan perilaku yang tidak terduga, urutan diagnosisnya biasanya error pada log, nama konfigurasi atau fungsi pada rencana, lalu halaman dokumentasi yang bersangkutan.
Memeriksa konfigurasi yang berlaku#
Sesi Spark menyimpan nilai efektif seluruh konfigurasinya, dan memeriksa langsung dari sesi menghindari kebingungan antara nilai bawaan, nilai dari berkas konfigurasi, dan nilai yang diberikan kode. Skrip berikut membaca beberapa konfigurasi penting yang sudah dikenal sepanjang jalur ini, lengkap dengan penanda untuk nilai yang diambil dari bawaan.
from pyspark.sql import SparkSession
spark = (
SparkSession.builder
.master("local[2]")
.appName("peraga-conf")
.config("spark.sql.shuffle.partitions", "2")
.getOrCreate()
)
print("=== konfigurasi yang berlaku pada sesi ini ===")
print("spark.master =", spark.conf.get("spark.master"))
print("spark.app.name =", spark.conf.get("spark.app.name"))
print("spark.sql.shuffle.partitions =", spark.conf.get("spark.sql.shuffle.partitions"))
print("spark.sql.adaptive.enabled =", spark.conf.get("spark.sql.adaptive.enabled", "true"), "(bawaan)")
print("spark.sql.autoBroadcastJoinThreshold =", spark.conf.get("spark.sql.autoBroadcastJoinThreshold", "10485760"), "(bawaan)")
print("spark.serializer =", spark.conf.get("spark.serializer", "org.apache.spark.serializer.JavaSerializer"), "(bawaan)")
spark.stop()WARNING: Using incubator modules: jdk.incubator.vector
=== konfigurasi yang berlaku pada sesi ini ===
spark.master = local[2]
spark.app.name = peraga-conf
spark.sql.shuffle.partitions = 2
spark.sql.adaptive.enabled = true (bawaan)
spark.sql.autoBroadcastJoinThreshold = 10485760 (bawaan)
spark.serializer = org.apache.spark.serializer.JavaSerializer (bawaan)Keluaran menegaskan urutan prioritas yang sudah diperagakan pada topik spark-submit. Tiga konfigurasi pertama berasal dari nilai yang diberikan kode dan peluncur, sedangkan tiga konfigurasi terakhir tidak pernah diset di mana pun pada sesi ini, sehingga nilai yang tampil adalah bawaan Spark. Pola spark.conf.get dengan nilai bawaan seperti ini juga menjadi alat diagnosis ringan ketika sebuah fitur berperilaku berbeda antar lingkungan, karena perbedaan lingkungan hampir selalu berarti perbedaan nilai konfigurasi.
Komunitas dan sumber pendukung#
Dua sumber resmi menutup celah yang tidak dijawab dokumentasi, yaitu arsip milis [email protected] untuk diskusi perilaku, dan pelacak masalah di GitHub Spark untuk memeriksa apakah kejanggalan yang ditemui sudah diketahui atau telah diperbaiki di versi tertentu. Ketika membaca tentang rilis baru, halaman release notes dan tautan migrasi versi adalah tempat pertama, karena Spark 4 membawa perubahan Java dan SQL ANSI yang relevan bagi jalur ini.
Di luar sumber resmi, dua buku yang paling sering menjadi rujukan tim adalah Learning Spark edisi kedua yang ditulis dari sudut pandang DataFrame modern, dan Spark: The Definitive Guide sebagai karya dari pembuat Spark sendiri. Keduanya menambahkan narasi desain yang tidak muat di dokumentasi, meski sebagian detail versinya lebih tua dan perlu diperiksa ulang terhadap dokumen resmi untuk Spark 4. Pertanyaan teknis sehari-hari biasanya lebih cepat terjawab di forum tanya jawab daripada di milis, dan memahami istilah resmi dokumentasi membuat kata kunci pencarian menjadi tepat.
Kesalahan umum#
Kesalahan pertama adalah membaca dokumen versi lama. Tautan ke dokumen Spark yang menyebut versi tertentu harus dicermati, karena perilaku konfigurasi dan batasan kompatibilitas berubah antar versi, dan halaman latest selalu menjadi acuan versi terkini. Ketika tutorial eksternal dan dokumen resmi berbeda, dokumen resmi pada versi yang benar itulah yang menang.
Kesalahan kedua adalah mengira setiap konfigurasi perlu disetel. Mayoritas konfigurasi bekerja dengan bawaannya, dan menyalin dinding konfigurasi dari proyek lain menambah titik gagal tanpa manfaat. Konfigurasi yang layak diset adalah yang menyelesaikan masalah yang terukur, dan pola putaran optimasi pada modul pengerjaan proyek menyediakan kerangkanya.
Kesalahan ketiga adalah berhenti pada jawaban pertama dari forum tanpa memeriksa versi dan konteks. Banyak jawaban lama ditulis untuk Spark 2 yang API-nya sudah berpindah ke DataFrame, dan jawaban yang benar untuk versi lama bisa menjadi sumber error di Spark 4. Menyebut versi Spark saat bertanya dan mencari jawaban yang menyebut versi memangkas waktu diagnosis secara nyata.
Ringkasan#
- Panduan inti bagi pengguna PySpark adalah Spark SQL, Structured Streaming, dan Spark Connect, dengan halaman konfigurasi dan referensi API sebagai rumah tetap.
spark.conf.getmembaca nilai efektif sesi dan menerima nilai bawaan, sehingga perbedaan antar lingkungan dapat didiagnosis dari sesi itu sendiri.- Milis resmi, pelacak masalah, dan halaman rilis menutup pertanyaan yang tidak dijawab dokumentasi.
- Learning Spark edisi kedua dan Spark: The Definitive Guide melengkapi narasi desain, dengan verifikasi terhadap dokumen resmi versi yang benar.
Referensi#
- Configuration — Apache Spark — Halaman konfigurasi resmi yang menjadi rumah pencarian nama konfigurasi.
- Spark SQL reference — Apache Spark — Peta sintaks SQL lengkap beserta tautan per perintah.
- Migration guide — Apache Spark — Panduan migrasi antar versi yang relevan saat membaca tentang rilis.