डेटा इंजीनियर इंटरव्यू सवाल

एक Spark task घंटे भर चलता है जबकि बाकी सेकंडों में खत्म हो जाते हैं। क्या हो रहा है और आप इसे कैसे ठीक करेंगे?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

यह data skew है: एक key के पास rows का बेतुका बड़ा हिस्सा है, इसलिए shuffle के बाद ज्यादातर काम एक ही partition करता है। इसकी पुष्टि join या group key के distribution को देखकर करें। ठीक करने के लिए adaptive query execution का skew join handling चालू करें, छोटी साइड फिट हो तो उसे broadcast करें, hot key को कई partitions में salt करें, या outlier keys को अलग करके अलग से process करें।

इंटरव्यूअर यह क्यों पूछते हैं

skew Spark की सबसे आम performance दिक्कत है, और diagnosis का रास्ता बताता है कि आपने कभी सचमुच Spark UI पढ़ी है या नहीं। इंटरव्यूअर चाहते हैं कि आप अंदाजे के बजाय डेटा से skew की पुष्टि करें, और यह जानें कि executors या memory बढ़ाने से मदद नहीं मिलती क्योंकि अड़चन एक partition है, कुल क्षमता नहीं।

अपना जवाब कैसे स्ट्रक्चर करें

  • skew का नाम लें और बताएं shuffle के बाद एक partition हावी क्यों हो जाता है।
  • पुष्टि करें: key distribution और stage में task duration का फैलाव देखें।
  • सिर्फ executors जोड़ने वाले गैर इलाज को खारिज करें।
  • इलाज क्रम से दें: broadcast, AQE skew join, salting, key को अलग करना।
  • nulls का जिक्र करें, जो अक्सर छिपा हुआ असली मुजरिम होते हैं।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

एक ही task पर लंबी पूंछ का लगभग हमेशा मतलब skew होता है: shuffle के बाद एक key एक partition में उतरी और ज्यादातर rows उसी partition में हैं। पहले मैं मान लेने के बजाय पुष्टि करता हूं, यानी join key पर count के साथ एक group by, और Spark UI में उस stage पर नजर जहां max task duration और shuffle read size median से कहीं बड़े हैं। इस पर executors फेंकने से कुछ नहीं होता, क्योंकि काम बंटा ही नहीं है। इलाज शक्ल पर निर्भर है। अगर join की दूसरी साइड छोटी है, तो उसे broadcast कर दें और shuffle पूरी तरह छोड़ दें। अगर दोनों साइड सचमुच बड़ी हैं, तो adaptive query execution skewed partitions को अपने आप बांट सकता है, और उससे आगे मैं salt करता हूं: hot key पर एक random suffix लगाता हूं, छोटी साइड को उन salts में replicate करता हूं, join करता हूं, फिर aggregate करता हूं। जिस चीज पर लोग फंसते हैं वह nulls है। हमारी एक join key करीब 40% rows में null थी, वे सब एक ही partition में hash हो रही थीं, और join से पहले nulls filter करने भर से मामला ठीक हो गया।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • adaptive query execution skewed partition को कैसे पकड़ता है?
  • जो table बहुत बड़ी है उसे broadcast करने का खतरा क्या है?
  • नतीजे बदले बिना आप join को salt कैसे करेंगे?

डेटा इंजीनियर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं