PySpark Mülakat Soruları
Yazan: Aaron Cao · Güncellendi

PySpark mülakatları yürütme modeli ve performans üzerine yoğunlaşır. Transformation ile action arasındaki farkı açıklamaya, hangi işlemlerin shuffle'a yol açtığını belirlemeye, broadcast join seçmeye, data skew'i teşhis etmeye, caching kullanımını gerekçelendirmeye ve belleği tüketen bir job'ı nasıl ayarlayacağınızı anlatmaya hazır olun.
Yürütme modeli hakkında hangi sorular sorulur?
Çalışan PySpark kodu yazabilirsiniz ve yine de burada takılabilirsiniz, çünkü bu sorular kodunuzun ne söylediğini değil, motorun ne yaptığını sorar. Mülakatçılar tam da bu yüzden bu sorularla açılır: sadece bir job çalıştırmış olanlarla onu gerçekten ayarlamış olanları ayırır. Bu bölüm model sorularını ve eksiksiz bir cevabın nelerden oluştuğunu ele alır.
- Transformation mı action mı, fark nedir? Transformation'lar bir plan oluşturur ve lazy şekilde yeni bir DataFrame döndürür;
count,collectgibi action'lar veya bir write işlemi yürütmeyi tetikler. Bir action sonuç istemeden hiçbir şey hesaplanmaz. - Laziness neden faydalıdır? Optimizer zinciri çalıştırmadan önce tümünü görür, böylece filtreleri yeniden sıralayabilir, kolonları budayabilir ve adımları birleştirebilir.
- Narrow mı wide mı?
filterveselectgibi narrow işlemler her çıktı partition'ını tek bir girdi partition'ına bağımlı tutar.groupBy,joinvedistinctgibi wide işlemler veriyi partition'lar arasında yeniden dağıtır, bu da bir shuffle'dır. - Shuffle nedir ve neden önemlidir? Veri ağ üzerinden hareket eder ve diske değer, bir stage sınırı oluşturur. Genellikle bir job'ın yaptığı en pahalı iştir.
- Job, stage ve task'ı açıklayın. Bir action bir job başlatır, shuffle sınırları onu stage'lere böler ve her stage partition başına bir task çalıştırır.
- RDD, DataFrame yoksa Dataset mi? DataFrame'leri tercih edin, çünkü Catalyst optimizer ve kolonsal yürütme burada geçerlidir. RDD'ler düşük seviye kontrol için kalır. Typed Dataset bir JVM kavramıdır, dolayısıyla Python'da dürüst cevap bunun geçerli olmadığıdır.
Cevaba uyduğunda shuffle ve stage kelimelerini kullanın. Mülakatçılar bunları bir Spark UI okuyup okumadığınızın kısayolu olarak kullanır.
Performans sorularını nasıl cevaplarsınız?
Kıdemli PySpark mülakatlarının çoğu performans mülakatıdır. Sorular tanım olarak değil senaryo olarak gelir.
- Bir join yavaş. Neyi kontrol edersiniz? Önce her iki tarafın boyutunu. Biri executor belleğine sığıyorsa broadcast edin ve shuffle'ı tamamen atlayın. Sığmıyorsa cluster boyutuna dokunmadan önce partitioning ve skew'e bakın.
- Data skew nedir ve nasıl düzeltilir? Birkaç key satırların çoğunu tutar, bu yüzden diğerleri bitirdikten uzun süre sonra bir task hâlâ çalışır. Çözümler arasında hot key'i salting yapmak, küçük tarafı broadcast etmek veya hepsi aynı yere hash'lenen null'ları filtrelemek vardır. Tanı sinyali Spark UI'daki task süresi dağılımıdır.
- Ne zaman cache veya persist yaparsınız? Bir DataFrame birden fazla action'da yeniden kullanıldığında ve yeniden hesaplama maliyetli olacaksa. Sadece bir kez kullanılan bir şeyi cache'lemek bellek israf eder, uzun job'larda unpersist etmek önemlidir.
- Repartition mı coalesce mi? Repartition shuffle yapar ve partition'ları eşit şekilde artırabilir veya azaltabilir; coalesce tam bir shuffle olmadan birleştirir, bu da çıktı dosyalarını azaltmanın daha ucuz yoludur.
- Python UDF'den neden kaçınılır? Satırlar JVM ile bir Python süreci arasında serileştirilir ve optimizer fonksiyonun içini göremez. Hazır fonksiyonları tercih edin, vectorized UDF'e yalnızca hazır bir fonksiyon yoksa başvurun.
collectneden tehlikelidir? Tüm sonucu driver'a çeker ve belleğini tüketebilir.- Bir job out of memory ile başarısız oluyor. İnceleme sıranız nedir? Önce driver mı executor mı, sonra skew, sonra partition boyutlandırması, sonra bellek yapılandırması. Belleği önce artırmak deneyimsizliği işaret eden bir cevaptır.
Bir platform ekibi için mülakata giren bir data engineer'a, bir yıldır çalışan gece job'ının neden aniden dört saat sürdüğü soruldu. İşe yarayan cevap bir yapılandırma değişikliği değildi; bir upstream ortağın join key'inde null göndermeye başlaması ve her null satırın aynı partition'a hash'lenmesiydi. Mülakatçılar bu sırayı ödüllendirir: cluster'a bakmadan önce veriye bakın.
Role göre ilgili soru bankaları interview questions by role altında yer alır.
Hangi pratik ve veri işleme soruları sorulur?
Kalan sorular bir tutorial'ı bitirmiş olmanızı değil, bir pipeline'ı canlıya almış olmanızı kontrol eder.
- Veriyi verimli şekilde nasıl okursunuz? Parquet gibi kolonsal formatlar, filtre kolonunda partition pruning ve predicate pushdown. Daha az byte okumanın sonrasını optimize etmekten neden daha iyi olduğunu açıklayın.
- Neden bir schema tanımlarsınız, çıkarım yaptırmak yerine? Inference veri üzerinde ekstra bir geçiş gerektirir ve çalıştırmalar arasında tipleri tutarsız şekilde tahmin edebilir.
- Null'ları ve duplicate'leri nasıl ele alırsınız? İlgili fonksiyonlar, artı null ağırlıklı join key'lerin skew yarattığı noktası.
- Window function'lar ne için kullanılır? Sıralama, running total ve key başına en son kaydı deduplicate etme, çok yaygın bir pipeline görevi.
- Binlerce küçük dosya üretmeden çıktıyı nasıl yazarsınız? Yazmadan önce coalesce veya repartition yapın ve çıktıyı makul cardinality'ye sahip bir kolona göre partition'layın.
- PySpark kodunu nasıl test edersiniz? Fixture DataFrame'lerle küçük yerel oturumlar ve DataFrame alıp DataFrame döndüren fonksiyonlara ayrıştırılmış iş mantığı.
- Bir job'ı nasıl submit eder ve yapılandırırsınız? Executor sayısı, core ve bellek, ayrıca hem çok sayıda küçük executor'ın hem de çok az sayıda büyük executor'ın kapasiteyi israf ettiği mantığı.
Mülakattan önce nasıl pratik yapmalısınız?
PySpark cevapları sesli söylendiğinde tanıdık bir şekilde çöker. Aday shuffle'ın pahalı olduğunu bilir ama hangi işlemlerin buna yol açtığını söyleyemez, böylece cevap bir sıfat listesine dönüşür. Bir soru bankası okumak tanıma üretir, tanıma ise biri beklerken sunulan bir açıklamayla aynı şey değildir.
Kurduğunuz bir pipeline'ı alın ve baştan sona anlatın: okuma, her transformation, stage sınırlarının nerede düştüğü ve yavaşlarsa önce neyi kontrol edeceğiniz. Yeniden başlamayı bırakana kadar sesli yapın. Bu istemleri takip sorusu soran bir AI mülakatçıya karşı çalıştırmak, notları yeniden okumaktan gerçek bir tura daha yakındır, ve mock interview modu tam olarak bunun için tasarlandı.
SubcueAI'nin kurucusu Aaron Cao, pratiği daha fazla soru sağlamak yerine bu konuşma açığı etrafında kurdu. Canlı bir mülakatta masaüstü uygulaması ve tarayıcı eklentisindeki Side Panel, mülakatçı konuşurken yapıyı yüzeye çıkarabilir; bu en çok zaten prova ettiğiniz materyalde yardımcı olur. Kurulum birkaç dakika sürer ve tutorial sayfasında anlatılır.
SSS
PySpark mülakatlarında canlı kodlama olur mu?
Bir PySpark rolü için ne kadar SQL bilmem gerekir?
Spark mülakatı için Scala öğrenmeli miyim?
En yaygın PySpark mülakat hatası nedir?
Bir AI asistanı canlı bir data engineering mülakatında bana yardımcı olabilir mi?
İlgili sorular
- Kodlama mülakatlarında ne tür sorular sorulur ve bir AI asistanı nasıl yardımcı olabilir?
- Bir HireVue video mülakatında hangi sorular sorulur?
- Hangi Databricks mülakat sorularını beklemeliyim?
- .NET mülakatında hangi soruları beklemeliyim?
- Hangi kalite mühendisi mülakat sorularını beklemeliyim?
- Quant mülakatında hangi soruları beklemeliyim?