Pertanyaan Wawancara PySpark
Oleh Aaron Cao · Diperbarui

Wawancara PySpark berfokus pada model eksekusi dan performa. Anda harus siap menjelaskan perbedaan antara transformation dan action, mengidentifikasi operasi mana yang memicu shuffle, memilih broadcast join, mendiagnosis data skew, membenarkan penggunaan caching, dan menjelaskan cara mengoptimalkan job yang kehabisan memori.
Apa yang ditanyakan pewawancara tentang model eksekusi?
Anda bisa menulis PySpark yang berjalan dan tetap tersandung di sini, karena pertanyaan ini menanyakan apa yang dilakukan engine, bukan apa yang dikatakan kode Anda. Pewawancara membuka dengan pertanyaan ini justru karena memisahkan orang yang pernah men-tuning job dari orang yang hanya pernah menjalankannya. Bagian ini membahas pertanyaan model tersebut dan apa saja yang termasuk dalam jawaban lengkap.
- Transformation atau action, apa bedanya? Transformation membangun rencana dan mengembalikan DataFrame baru secara lazy; action seperti
count,collectatau operasi write memicu eksekusi. Tidak ada yang dihitung sampai action meminta hasil. - Mengapa laziness berguna? Optimizer melihat seluruh rantai sebelum menjalankannya, sehingga bisa menyusun ulang filter, memangkas kolom, dan menggabungkan langkah.
- Transformation narrow atau wide? Operasi narrow seperti
filterdanselectmembuat setiap partisi output bergantung pada satu partisi input. Operasi wide sepertigroupBy,joindandistinctmendistribusikan ulang data lintas partisi, itulah shuffle. - Apa itu shuffle dan mengapa penting? Data berpindah lewat jaringan dan menyentuh disk, membentuk batas stage. Ini biasanya hal paling mahal yang dilakukan sebuah job.
- Jelaskan job, stage, dan task. Sebuah action memulai job, batas shuffle membaginya menjadi stage, dan setiap stage menjalankan satu task per partisi.
- RDD, DataFrame, atau Dataset? Utamakan DataFrame, karena optimizer Catalyst dan eksekusi kolumnar berlaku di sana. RDD masih dipakai untuk kontrol tingkat rendah. Dataset bertipe adalah konsep JVM, jadi di Python jawaban jujurnya adalah itu tidak berlaku.
Ucapkan kata shuffle dan stage saat memang relevan dengan jawaban. Pewawancara memakainya sebagai jalan pintas untuk menilai apakah Anda pernah membaca Spark UI.
Bagaimana cara menjawab pertanyaan performa?
Sebagian besar wawancara PySpark tingkat senior adalah wawancara performa. Pertanyaannya datang sebagai skenario, bukan definisi.
- Sebuah join berjalan lambat. Apa yang Anda periksa? Ukuran tiap sisi lebih dulu. Jika satu sisi muat di memori executor, broadcast sisi itu dan hilangkan shuffle sepenuhnya. Jika tidak, periksa partitioning dan skew sebelum menyentuh ukuran cluster.
- Apa itu data skew dan bagaimana memperbaikinya? Beberapa key menampung sebagian besar baris, sehingga satu task berjalan lama setelah yang lain selesai. Solusinya termasuk salting pada hot key, broadcast sisi yang kecil, atau memfilter null yang semuanya di-hash ke tempat sama. Sinyal diagnostiknya adalah sebaran durasi task di Spark UI.
- Kapan Anda melakukan cache atau persist? Ketika sebuah DataFrame dipakai ulang di banyak action dan perhitungan ulang akan mahal. Meng-cache sesuatu yang hanya dipakai sekali membuang memori, dan unpersist penting pada job yang berjalan lama.
- Repartition atau coalesce? Repartition melakukan shuffle dan bisa menambah atau mengurangi partisi secara merata; coalesce menggabungkan tanpa shuffle penuh, cara yang lebih murah untuk mengurangi jumlah file output.
- Mengapa menghindari UDF Python? Baris di-serialisasi antara JVM dan proses Python, dan optimizer tidak bisa melihat isi fungsi tersebut. Utamakan fungsi built-in, dan gunakan vectorized UDF hanya jika tidak ada built-in yang tersedia.
- Mengapa
collectberbahaya? Ia menarik seluruh hasil ke driver dan bisa menghabiskan memorinya. - Sebuah job gagal karena out of memory. Apa urutan investigasi Anda? Apakah itu driver atau executor, lalu skew, lalu ukuran partisi, lalu konfigurasi memori. Menaikkan memori sebagai langkah pertama adalah jawaban yang menunjukkan kurangnya pengalaman.
Seorang data engineer yang wawancara untuk tim platform ditanya mengapa job malam hari yang sudah berjalan setahun tiba-tiba memakan waktu empat jam. Jawaban yang tepat bukan perubahan konfigurasi, melainkan karena satu mitra upstream mulai mengirim null di join key, sehingga setiap baris null di-hash ke satu partisi yang sama. Pewawancara menghargai urutan itu: periksa data dulu sebelum cluster.
Kumpulan pertanyaan terkait per peran ada di interview questions by role.
Pertanyaan praktis dan pengolahan data apa saja yang muncul?
Sisa pertanyaan lainnya memeriksa apakah Anda pernah merilis pipeline sungguhan, bukan sekadar menyelesaikan tutorial.
- Bagaimana Anda membaca data secara efisien? Format kolumnar seperti Parquet, partition pruning pada kolom filter, dan predicate pushdown. Jelaskan mengapa membaca lebih sedikit byte lebih baik daripada mengoptimalkan apa yang terjadi setelahnya.
- Mengapa mendefinisikan schema alih-alih menginferensinya? Inference memerlukan pass tambahan atas data dan bisa menebak tipe secara tidak konsisten antar run.
- Bagaimana Anda menangani null dan duplikat? Fungsi-fungsi yang relevan, ditambah fakta bahwa join key yang penuh null menciptakan skew.
- Untuk apa window function digunakan? Ranking, running total, dan deduplikasi ke record terbaru per key, tugas pipeline yang sangat umum.
- Bagaimana Anda menulis output tanpa menghasilkan ribuan file kecil? Coalesce atau repartition sebelum menulis, dan partisi output berdasarkan kolom dengan cardinality yang wajar.
- Bagaimana Anda menguji kode PySpark? Sesi lokal kecil dengan DataFrame fixture, dan logika bisnis dipecah menjadi fungsi yang menerima serta mengembalikan DataFrame.
- Bagaimana Anda submit dan mengonfigurasi job? Jumlah executor, core, dan memori, serta alasan bahwa terlalu banyak executor kecil maupun terlalu sedikit executor besar sama-sama membuang kapasitas.
Bagaimana seharusnya Anda berlatih sebelum wawancara?
Jawaban PySpark gagal saat diucapkan dengan cara yang mudah dikenali. Kandidat tahu bahwa shuffle itu mahal tapi tidak bisa menyebutkan operasi mana yang menyebabkannya, sehingga jawabannya menjadi daftar kata sifat. Membaca bank soal menghasilkan pengenalan, dan pengenalan tidak sama dengan penjelasan yang disampaikan saat seseorang menunggu.
Ambil satu pipeline yang pernah Anda bangun dan ceritakan dari awal sampai akhir: proses baca, setiap transformation, di mana batas stage jatuh, dan apa yang akan Anda periksa lebih dulu jika berjalan lambat. Lakukan dengan bersuara sampai Anda berhenti mengulang dari awal. Menjalankan latihan ini melawan AI interviewer yang memberikan pertanyaan lanjutan lebih mendekati babak wawancara sungguhan daripada membaca ulang catatan, dan itulah tujuan dibuatnya mode mock interview.
Aaron Cao, pendiri SubcueAI, membangun latihan ini di seputar kesenjangan berbicara tersebut, bukan di seputar menyediakan lebih banyak pertanyaan. Dalam wawancara langsung, aplikasi desktop dan Side Panel di ekstensi browser bisa menampilkan struktur saat pewawancara berbicara, yang paling membantu pada materi yang sudah Anda latih sebelumnya. Pengaturannya hanya perlu beberapa menit dan dijelaskan di halaman tutorial.
FAQ
Apakah wawancara PySpark mencakup live coding?
Seberapa banyak SQL yang saya butuhkan untuk peran PySpark?
Perlukah saya belajar Scala untuk wawancara Spark?
Apa kesalahan paling umum dalam wawancara PySpark?
Bisakah asisten AI membantu saya selama wawancara data engineering langsung?
Pertanyaan terkait
- Jenis pertanyaan apa yang muncul dalam wawancara coding dan bagaimana asisten AI dapat membantu?
- Pertanyaan apa saja yang diajukan dalam wawancara video HireVue?
- Pertanyaan wawancara Databricks apa yang perlu saya antisipasi?
- Pertanyaan wawancara .NET apa yang perlu saya antisipasi?
- Pertanyaan wawancara quality engineer apa yang perlu saya antisipasi?
- Pertanyaan apa yang akan muncul dalam wawancara quant?
← Selengkapnya tentang Pertanyaan Wawancara Berdasarkan Peran & Topik