2015-12-26 9 views
5

में एक ही नौकरी के लिए मैपर और रेड्यूसर आउटपुट मुद्रित करना संभव है, किसी दिए गए एमआर नौकरी के लिए, मुझे दो आउटपुट फाइलों का उत्पादन करने की आवश्यकता है। एक फ़ाइल मैपर एक और फ़ाइल के उत्पादन में प्रसारण के उत्पादन मेंहैडोप मैप्रिडस

दोनों नक्शाकार और कम करने उत्पादन एक भी काम में लिखा जा रहा है सकते हैं (जो सिर्फ एक मैपर ऊपर का एकत्रीकरण है) होना चाहिए किया जाना चाहिए?

संपादित करें:

नौकरी 1 (केवल मैपर चरण) आउटपुट एक ही पंक्ति है, जो HDFS (file1) को पत्र लिखा जाना है में 20 क्षेत्रों में शामिल है में। जॉब 2 (मैपर एन रेड्यूसर) में मैपर जॉब 1 आउटपुट से इनपुट लेता है, कुछ फ़ील्ड को मानक प्रारूप (केवल 10 फ़ील्ड) में लाने के लिए हटा देता है और इसे reducer में भेजता है जो फ़ाइल 2 लिखता है।

मुझे hdfs में file1 और file2 दोनों की आवश्यकता है ... अब मेरा संदेह है, चाहे जॉब 1 मैपर में मैं फ़ाइल 1 के रूप में hdfs में डेटा लिख ​​सकता हूं, फिर उसी डेटा को संशोधित कर सकता हूं और इसे reducer में भेज सकता हूं।

पीएस: अभी तक मैं चेनिंग तंत्र के साथ 2 नौकरियों का उपयोग कर रहा हूं। पहली नौकरी में केवल नक्शा होता है, सेकंड जॉब में मैपर और रेड्यूसर होता है।

+0

मुझे लगता है, आप परिणाम उत्पन्न करने के लिए एक एमआर नौकरी का उपयोग कर सकते हैं। क्या आप दूसरी नौकरी के मैपर में कोई बदलाव कर रहे हैं, यदि नहीं, तो मैपर के आउटपुट को एक एमआर नौकरी में रेड्यूसर में पास करें। – YoungHobbit

+0

मैं दूसरा मैपर मैं सिर्फ एक पंक्ति के लिए कॉलम की संख्या को संशोधित कर रहा हूं .. उदाहरण के लिए: मैपर (फ़ाइल 1) के आउटपुट में 20 कॉलम हैं, मैपर 2 के आउटपुट में 7 कॉलम हैं। Mapper2 से डुप्लिकेट पंक्तियों को reducer में हटा दिया जाएगा। – Abhinay

+0

यदि आप पहले नौकरियों में ऐसा कर सकते हैं तो मैपर फिर वहां करें और नौकरियों को मर्ज करें। अन्यथा दोनों नौकरियों के बारे में विस्तृत जानकारी कृपया। – YoungHobbit

उत्तर

2

आप शायद नक्शा के लिए एक आउटपुट परिभाषित करने के लिए MultipleOutputs कक्षा का उपयोग कर सकते हैं और (वैकल्पिक रूप से) reducer के लिए एक। मैपर के लिए, आपको चीजों को दो बार लिखना होगा: एक बार आउटपुट फ़ाइल (एकाधिकऑटपुट का उपयोग करके) और एक बार रेड्यूसर (सामान्य के रूप में) को जोड़ने के लिए। -> मैपर 2 -> प्रसारण (फ़ाइल 2)

मैपर 1 (फ़ाइल 1):

उसके बाद, आप भी लाभ ChainMapper वर्ग के एक भी काम में निम्नलिखित कार्यप्रवाह को परिभाषित करने के ले सकता है,

ईमानदार होने के लिए, मैंने कभी भी इस तर्क का उपयोग नहीं किया है, लेकिन आप इसे आज़मा सकते हैं। सौभाग्य!

+0

धन्यवाद Vefthym। मैं एकाधिक आउटपुट के बारे में नहीं जानता .. मैंने उस अवधारणा का उपयोग किया। मैंने मैपर में एकाधिक आउटपुट का उपयोग किया, एचडीएफएस में डेटा लिखा, और डेटा को मध्यस्थ डेटा को reducer के रूप में पास कर दिया। अब मेरे दोनों मैपर और reducer hdfs में लिख रहे हैं। – Abhinay

+0

@Abhinay मुझे खुशी है कि यह काम किया! – vefthym

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