main()
और ToolRunner.run()
से मैप्रिडस नौकरी को कॉल करने के बीच क्या अंतर है? जब हम कहते हैं कि मुख्य वर्ग कहता है, MapReduce extends Configured implements Tool
, हमें अतिरिक्त विशेषाधिकार क्या हैं जो हमारे पास नहीं हैं यदि हम मुख्य विधि से नौकरी का सरल रन बनाना चाहते हैं? धन्यवाद।नौकरी को कॉल करने में अंतर
उत्तर
बिना किसी अतिरिक्त विशेषाधिकार नहीं है, लेकिन अपने आदेश पंक्ति विकल्पों GenericOptionsParser, जो आप कुछ विन्यास गुण निकालने और इसमें से एक विन्यास वस्तु कॉन्फ़िगर की अनुमति देगा के माध्यम से चलाने के हो: मूल रूप से
http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/util/GenericOptionsParser.html
बल्कि यह है कि कुछ को पार्स विकल्प अपने आप को (सूची में तर्क के सूचकांक का उपयोग करके), आप स्पष्ट रूप से कमांड लाइन से विन्यास गुण कॉन्फ़िगर कर सकते हैं:
hadoop jar myJar.jar com.Main prop1value prop2value
public static void main(String args[]) {
Configuration conf = new Configuration();
conf.set("prop1", args[0]);
conf.set("prop2", args[1]);
conf.get("prop1"); // will resolve to "prop1Value"
conf.get("prop2"); // will resolve to "prop2Value"
}
ज्यादा मोर बन जाता है ई ToolRunner साथ सघन:
hadoop jar myJar.jar com.Main -Dprop1=prop1value -Dprop2=prop2value
public int run(String args[]) {
Configuration conf = getConf();
conf.get("prop1"); // will resolve to "prop1Value"
conf.get("prop2"); // will resolve to "prop2Value"
}
एक चेतावनी के अंतिम शब्द है, हालांकि: जब विन्यास विधि getConf() का उपयोग कर, अपनी नौकरी वस्तु पहले बनाने के लिए, और उसके बाद खींचें इसके विन्यास बाहर - नौकरी निर्माता Configruation वस्तु की एक प्रतिलिपि बनाता में पारित कर दिया, इसलिए यदि आप संदर्भ में पारित में परिवर्तन करता है, तो आप काम उन परिवर्तनों को नहीं देख पाएंगे:
public int run(String args[]) {
Configuration conf = getConf();
conf.set("prop3", "blah");
Job job = new Job(conf); // job will have a deep copy of conf
conf.set("prop4", "dummy"); // here we're amending the original conf
job.getConfiguration().get("prop4"); // will resolve to null
}
ToolRunner .run() का उपयोग कर, किसी भी Hadoop आवेदन standard command line options Hadoop द्वारा समर्थित संभाल सकते हैं। ToolRunner आंतरिक रूप से GenericOptionsParser का उपयोग करता है। संक्षेप में, हैडऑप विशिष्ट विकल्प जो कमांड लाइन प्रदान किए जाते हैं उन्हें पार्स किया जाता है और एप्लिकेशन के Configuration ऑब्जेक्ट में सेट किया जाता है। यदि आप बस मुख्य() का उपयोग करते हैं, तो यह स्वचालित रूप से नहीं होता है।
उदाहरण के लिए। यदि आप कहते हैं:
% hadoop MyHadoopApp -D mapred.reduce.tasks=3
फिर ToolRunner.run(new MyHadoopApp(), args)
स्वचालित रूप से मूल्य पैरामीटर mapred.reduce.tasks
3 करने के लिए Configuration
वस्तु में सेट हो जाएगा।
कोई अतिरिक्त विशेषाधिकार नहीं है जिसे हम प्राप्त करते हैं। आम तौर पर लोग हडूप नौकरियों में मुख्य() का उपयोग नहीं करते हैं। ToolRunner का उपयोग करना .run() एक मानक अभ्यास है।
@ तेजास-थानक्स बहुत !! :) हाँ, मेरे मन में इतना अस्पष्ट विचार था लेकिन अब यह स्पष्ट है .. –
- 1. नौकरी, कार्य और प्रक्रिया, अंतर क्या है
- 2. फ़ाइल-जैसी और रीडलाइन को कॉल करने के बीच अंतर
- 3. एसक्यूएल नौकरी कैसे नौकरी चलाने के लिए?
- 4. यूनिक्स में नौकरी और प्रक्रिया के बीच क्या अंतर है?
- 5. जेनकींस नौकरियों में नौकरी विरासत
- 6. वर्तमान में पीबीएस नौकरी
- 7. रेल + देरी नौकरी: कस्टम नौकरी कक्षाओं को स्टोर करने के लिए सही जगह कहां है?
- 8. कॉल को आमंत्रित करने में बेनामी विधि
- 9. क्रॉन नौकरी चर
- 10. चेकबॉक्स पर क्लिक करने और '.click()' फ़ंक्शन को कॉल करने के बीच क्या अंतर है?
- 11. रेल में गतिशील नौकरी शेड्यूलिंग
- 12. जेनकिंस नौकरी
- 13. एसएसआईएस नौकरी
- 14. निपटान कॉल करने में असमर्थ?
- 15. मेरी क्वार्ट्ज नौकरी में इंजेक्शन
- 16. एसिंक्रोनस कॉल और एसिंक्रोनस आईओ कॉल के बीच अंतर .net
- 17. एक्सेल वीबीए में नए कीवर्ड का उपयोग करने और CreateObject को कॉल करने के बीच अंतर क्या हैं?
- 18. आईफोन ASIHTTP - एपीआई कॉल के बीच अंतर?
- 19. Grails में नौकरी के समवर्ती निष्पादन को कैसे रोकें?
- 20. रेलों में सभी देरी हुई नौकरी को नष्ट करना
- 21. वर्चुअल फ़ंक्शन और गैर आभासी फ़ंक्शन को कॉल करने के बीच अंतर?
- 22. सीधे लेआउटइनफ्लेटर को कॉल करने के बीच क्या अंतर है और नहीं?
- 23. Double.valueOf (स्ट्रिंग एस) और नए डबल (स्ट्रिंग एस) को कॉल करने के बीच क्या अंतर है?
- 24. एडब्ल्यूएस ग्लेशियर नौकरी हटाएं
- 25. संदेश/नौकरी कतार
- 26. सूची गियरमैन नौकरी हैंडल
- 27. फ़ंक्शन को कॉल करने और फ़ंक्शन का उदाहरण बनाने के बीच जावास्क्रिप्ट अंतर
- 28. आर नौकरी नौकरी कतार/काम का बोझ प्रबंधन
- 29. अगर एक नौकरी Quartz1.6
- 30. जेनकींस में नौकरी का नाम बदलें
ठीक है, यह कोड के साथ अच्छी व्याख्या थी। मैंने पहले नौकरी ऑब्जेक्ट बनाने की तरह पहले कुछ बिंदुओं पर ध्यान नहीं दिया था और फिर इसकी कॉन्फ़िगरेशन प्राप्त कर रहा था लेकिन अब यह समझ में आता है .. –