performance - Custom Mapper and Reducer vs HiveQL -


समस्या वक्तव्य: -

मुझे दो तालिकाओं की तुलना करना तालिका 1 और तालिका 2 और वे दोनों एक ही चीज़ को स्टोर करते हैं इसलिए मुझे Table2 के साथ Table1 के रूप में Table1 की तुलना करना चाहिए मुख्य तालिका जिसके द्वारा तुलना की जानी चाहिए। इसलिए तुलना करने के बाद मुझे एक रिपोर्ट बनाने की आवश्यकता है जो कि Table2 में किसी तरह का विसंगति है और इन दो तालिकाओं में बहुत सारे डेटा हैं, डेटा के टीबी के आसपास इसलिए वर्तमान में मैंने लिखित HiveQL को तुलना करने के लिए और डेटा वापस प्राप्त किया है।

तो मेरा सवाल है जो निष्पादन के संदर्भ में बेहतर है, इस तरह की नौकरी या करने के लिए CUSTOM MAPPER और REDUCER लिखना HiveQL जो मैंने लिखा था वह ठीक होगा क्योंकि मैं इन दो तालिकाओं में लाखों रिकॉर्डों में शामिल हो जाएगा। जहाँ तक मुझे पता है कि HiveQL आंतरिक रूप से (दृश्यों के पीछे) अनुकूलित कस्टम मानचित्र-रेड्यूसर उत्पन्न करता है और निष्पादन के लिए सबमिट करता है और परिणाम वापस ले जाता है।

आपके प्रश्न का उत्तर दो गुना है।

सबसे पहले, यदि कुछ प्रसंस्करण है जो आप हाइव क्यूएल वाक्यविन्यास में व्यक्त कर सकते हैं, तो मैं बहस करता हूं कि हाइव का प्रदर्शन कस्टम मैप लिखने की तुलना में कम है यहां केवल एक ही पकड़ है, जब आपके पास अपने डेटा के बारे में कुछ अतिरिक्त जानकारी होती है जिसे आप अपने मानचित्र में कम करते हैं, लेकिन हाइव के माध्यम से नहीं करते उदाहरण के लिए, यदि आपका डेटा सॉर्ट किया गया हो, तो आप मैपरर में अपनी फ़ाइल-विभाजन को संसाधित करते समय इस सूचना का उपयोग कर सकते हैं, जब तक कि हाइव को इस सॉर्टिंग ऑर्डर से अवगत कराया जाता है, तब तक यह जानकारी इस का उपयोग करने में सक्षम नहीं होगी फायदा। अक्सर, ऐसी अतिरिक्त जानकारी (मेटाडेटा या कॉन्फ़िगर गुणों के माध्यम से) को निर्दिष्ट करने का एक तरीका है लेकिन कुछ समय हो सकता है, यहां तक ​​कि हाइव द्वारा उपयोग के लिए यह जानकारी निर्दिष्ट करने का कोई तरीका भी नहीं हो सकता है।

दूसरे, कभी-कभी एससीएल जैसे कथन में आसानी से अभिव्यक्त नहीं होने के लिए प्रोसेसिंग को पर्याप्त रूप से समझा जा सकता है। इन मामलों में आम तौर पर आपके प्रसंस्करण के दौरान आंतरायिक स्थिति को स्टोर करना पड़ता है। कुछ हद तक इस समस्या को कम करें हालांकि, अगर आपको कुछ और कस्टम की ज़रूरत है, तो मैं कस्टम मैपर और / या रीड्यूसर के उपयोग से हमेशा प्लगिंग करना चाहता हूं। यह आपको एक हाइव क्वेरी के संदर्भ में नक्शा-कमी का लाभ लेने की अनुमति देता है, जिससे आपको एक ही क्वेरी में स्क्रिप्ट्स को कस्टम मैप-कम करने के साथ एचआईवी-एसक्यूएल की कार्यक्षमता को मिलाकर और मिलान करने की अनुमति मिलती है।

लंबी कहानी छोटी: यदि आपकी प्रसंस्करण आसानी से एक हाइव क्यूएल क्वेरी के माध्यम से अभिव्यक्त हो गई है, तो मुझे ऐसा करने के लिए मानचित्र को कम करने के लिए बहुत ज्यादा कारण नहीं दिख रहा है। मुख्य कारणों में से एक हाइव बनाया गया था, जैसे लोगों को हमें नक्शा-कम लिखने के बजाय एसक्यूएल जैसे प्रश्नों को लिखने की अनुमति देना था। अगर हम शानदार हाइव क्वेशेंस (प्रदर्शन के कारणों या अन्यथा) के बजाय नक्शा-कमी लिखना समाप्त करते हैं, तो कोई यह तर्क दे सकता है कि हाइव ने अपने प्राथमिक उद्देश्य पर एक अच्छी नौकरी नहीं की है। दूसरी तरफ, यदि आपके पास आपके डेटा के बारे में कुछ जानकारी है जो कि हाइव का लाभ नहीं ले सकता है, तो आप कस्टम मैप लिखने से बेहतर हो सकते हैं-कार्यान्वयन को कम कर सकते हैं जो उस सूचना का उपयोग करता है लेकिन फिर, फिर से पूरे नक्शे को लिखने की ज़रूरत नहीं है, जब आप पहले से उल्लेखित हाइव ट्रांसफ़ॉर्म की कार्यक्षमता का उपयोग करके मैपर्स और रेड्यूसर में बस प्लग इन कर सकते हैं।

Comments