shuffle join दोनों साइड को join key के हिसाब से नेटवर्क पर दोबारा partition करता है ताकि मिलती जुलती keys एक ही executor पर उतरें, जो महंगा पड़ता है। broadcast join छोटी table पूरी की पूरी हर executor को भेज देता है, इसलिए बड़ी साइड बिना shuffle के वहीं locally join हो जाती है। broadcast तब करें जब छोटी साइड executor memory में आराम से समा जाए, auto broadcast threshold tune करें, और पक्का करें कि statistics सही हों ताकि planner सही चुनाव करे।
इंटरव्यूअर यह क्यों पूछते हैं
Spark tuning की ज्यादातर जीत join strategy से ही आती है, इसलिए इंटरव्यूअर इससे मापते हैं कि आप distributed execution समझते हैं या सिर्फ API बुलाते हैं। वे broadcasting की memory सीमा चाहते हैं, planner के फैसलों में table statistics की भूमिका चाहते हैं, और यह समझ भी कि गलत broadcast driver या executor को out of memory से गिरा देता है।
अपना जवाब कैसे स्ट्रक्चर करें
- हर रणनीति में डेटा की असली हलचल बताएं।
- वह size शर्त कहें जो broadcast को मुमकिन बनाती है।
- समझाएं कि planner कैसे तय करता है और किन statistics पर टिकता है।
- बहुत बड़ी चीज broadcast करने का failure mode बताएं।
- बार बार shuffles से बचने के तरीके के तौर पर bucketing का जिक्र करें।
उदाहरण जवाब
shuffle join दोनों datasets को नेटवर्क पर घुमाता है ताकि एक ही key वाली rows एक ही partition में पहुंचें, यानी serialization, disk spill और खूब सारा network traffic। broadcast join यह सब टाल देता है, छोटी table हर executor को भेजकर वहीं local hash join कर लेता है, इसलिए बड़ी table हिलती ही नहीं। planner अपने आप broadcast चुनता है जब उसे लगता है कि एक साइड auto broadcast threshold से नीचे है, जिसका डिफॉल्ट करीब 10MB है, और यहां असली काम 'लगता है' शब्द कर रहा है। अगर statistics पुराने हैं या source बिना stats वाला file scan है, तो वह गलत चुनेगा, इसलिए मैं या तो ANALYZE चलाता हूं या साफ broadcast hint देता हूं। failure mode जानने लायक है: जो table असल में दो गीगाबाइट है उसे broadcast करने पर वह driver के जरिए इकट्ठी होती है और job को मार देती है। जो joins हम हर घंटे उसी key पर दोहराते थे, उनके लिए tables को उस key पर bucket करने से shuffle हमेशा के लिए हट गया।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- broadcast के दौरान driver पर क्या होता है?
- bucketing shuffle से कैसे बचाती है, और उसकी कीमत क्या है?
- sort merge join hash join से कब बेहतर रहेगा?
डेटा इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें