2012-02-13 12 views
7

मुझे हाइव में शामिल होने के दौरान रेड्यूसर की संख्या निर्धारित करने की आवश्यकता है। मैं अपने प्रत्येक नौकरी में शामिल होने के लिए समान संख्या में reducers सेट नहीं करना चाहता। मैं इसे तर्क के रूप में कैसे जिक्र कर सकता हूं? अग्रिम में धन्यवाद।हाइव रेड्यूसर की सेट संख्या में शामिल हों

उत्तर

14

स्क्रिप्ट फ़ाइल के शीर्ष पर, यह डाल:

set mapred.reduce.tasks=128 
+0

यह एक विशिष्ट शामिल होने के बजाय क्वेरी के सभी हिस्सों के लिए इसे सेट करेगा। प्रति-शामिल आधार पर इसे करने का कोई तरीका नहीं है (कम से कम अभी तक नहीं) –

+0

मुझे इसमें शामिल होने के लिए इसकी आवश्यकता है। मेरा मतलब है कि मेरी स्क्रिप्ट में एकाधिक प्रश्न पूछने हैं, प्रत्येक में अलग-अलग इनपुट आकार हैं। इसलिए मैं भारी संख्या में रेड्यूकर्स को भारी जोड़ों और कम संख्या में रेड्यूकर्स सेट करना चाहता हूं जहां बहुत कम डेटा पर शामिल होना है। – Sandeep

+0

मुझे इस तरह कुछ चाहिए। एचआईवीआईआईएचओएमई/बिन/हाइव -सेट mapred.reducer.tasks = "कमांड"। ताकि मैं टर्मिनल से हाइव कमांड चला सकूं। – Sandeep

0

केवल वर्तमान में यह करने के लिए जिस तरह से कई भागों जहां भारी मिलती है एक अलग लिपि में डाल दिया जाएगा में अपने एक हाइव स्क्रिप्ट विभाजित करने के लिए है। फिर भारी जुड़ने के लिए, आप उच्च संख्या में reducers निर्दिष्ट कर सकते हैं। एक ही बार में इन लिपियों के सभी पर अमल करने के लिए, आप के रूप में नीचे दिखाया गया है सभी एक खोल स्क्रिप्ट में सूचीबद्ध स्क्रिप्ट के साथ hive -f विकल्प का उपयोग कर सकते हैं: #example of shell script RunMyHQL.sh $HIVE_HOME/bin/hive -f /somepath/script1.hql $HIVE_HOME/bin/hive -f /somepath/script2.hql $HIVE_HOME/bin/hive -f /somepath/script3.hql

फिर फ़ाइल chmod u+x /somepath/RunMyHQL.sh

फिर RunMyHQL.sh के लिए उचित अनुमतियां असाइन शेल स्क्रिप्ट निष्पादित करें ./RunMyHQL.sh प्रत्येक स्क्रिप्ट 1, स्क्रिप्ट 2 और स्क्रिप्ट 3 में मैपर्स और रेड्यूसर की वांछित संख्या हो सकती है। यदि इसे विशिष्ट अंतराल पर और अधिक चलाने की आवश्यकता है, तो मेरा सुझाव है कि आप ओज़ी वर्कफ़्लो को कार्यान्वित करें।

संबंधित मुद्दे