मेरे पास दो अलग-अलग मैप्रिडस नौकरियों के लिए दो अलग जावा कक्षाएं हैं। मैं उन्हें स्वतंत्र रूप से चला सकता हूं। इनपुट फाइलें जिन पर वे काम कर रहे हैं वे दोनों नौकरियों के लिए समान हैं। तो मेरे सवाल है कि क्या यह की तरहहडोप मैपराइडस: एक हैडोप जॉब क्लास में दो मैपर और रेड्यूसर को परिभाषित करना संभव है?
mapper1.class
mapper2.class
reducer1.class
reducer2.class
और एक जावा वर्ग में दो मानचित्रकारों और दो reducers परिभाषित करना संभव है है तो
job.setMapperClass(mapper1.class);
job.setmapperClass(mapper2.class);
job.setCombinerClass(reducer1);
job.setCombinerClass(reducer2);
job.setReducerClass(reducer1);
job.setReducerClass(reducer2);
की तरह इन सेट के तरीके वास्तव में पिछले अभियानों को ओवरराइड या नया जोड़ सकता हूँ लोगों को? मैंने कोड की कोशिश की, लेकिन यह केवल नवीनतम दिए गए वर्गों को निष्पादित करता है जो मुझे सोचता है कि यह ओवरराइड करता है। लेकिन यह सही करने का एक तरीका होना चाहिए?
कारण मैं यह क्यों पूछ रहा हूं कि मैं इनपुट फ़ाइलों को केवल एक बार (एक I/O) पढ़ सकता हूं और फिर दो मानचित्रों को नौकरियों को कम कर सकता हूं। मैं यह भी जानना चाहता हूं कि मैं आउटपुट फ़ाइलों को दो अलग-अलग फ़ोल्डरों में कैसे लिख सकता हूं। फिलहाल, दोनों नौकरियां अलग हैं और इनपुट और आउटपुट निर्देशिका की आवश्यकता है।
+1 यह समझ में आता है। – pyfunc
@Chris एमआर की दोनों जोड़ी एक ही इनपुट साझा करती है, जिसने मुझे केवल एक बार इनपुट पढ़ने में सक्षम होने के बारे में सोचा। मैपर विभिन्न चाबियों के साथ काम करते हैं। इसका मतलब है कि एक मैपर के लिए चाबियाँ अन्य मैपर के लिए अलग-अलग होंगी। मैं सोच रहा हूं कि मैं एमआर के दो अलग-अलग जोड़े में प्रक्रिया करने के लिए केवल एक बार इनपुट फाइलें पढ़ सकता हूं जो अनिवार्य रूप से काम करते हैं। – Bob