2012-02-22 14 views
39

मैं हडूप पर एक नौसिखिया हूं, मैं मानचित्र की शैली से परिचित हो रहा हूं-प्रोग्रामिंग को कम करता हूं लेकिन अब मुझे एक समस्या का सामना करना पड़ रहा है: कभी-कभी मुझे नौकरी के लिए केवल नक्शा चाहिए और मुझे केवल आउटपुट के रूप में मानचित्र परिणाम की आवश्यकता है, जो इसका मतलब है कि चरण को कम करने की आवश्यकता नहीं है, मैं इसे कैसे प्राप्त कर सकता हूं?'केवल नक्शा' हैडूप नौकरियां कैसे लिखें?

+1

यह जांचें [केवल-केवल नौकरियां] (http://www.unmeshasreeveni.blogspot.in/2014/05/map-only-jobs-in-hadoop.html) –

उत्तर

57

यह reducer बंद कर देता है।

job.setNumReduceTasks(0); 

http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Job.html#setNumReduceTasks(int)

+0

धन्यवाद थॉमस, अभी भी एक समस्या बनी हुई है : 0 को कम करने के सेट संख्या के बाद, एचडीएफएस पर मानचित्र परिणाम कैसे सहेजना है? (मेरा मतलब है कि पार्ट-एम - ***** जैसी फाइलों के लिए नक्शा परिणाम कैसे लिखना है) – Breakinen

+0

हैडोप यह आपके लिए करता है, आपको इसकी परवाह करने की आवश्यकता नहीं है। –

+2

क्या हमें इस मामले में आउटपुट कुंजी और मूल्य को कम करने की आवश्यकता है? –

7

तुम भी IdentityReducer उपयोग कर सकते हैं:

http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/IdentityReducer.html

+1

धन्यवाद पीटर, मैंने आइडेंटिटी रेड्यूसर का स्रोत पढ़ा है, यह वास्तव में मेरा क्या मतलब है, लेकिन क्या एचडीएफएस को सीधे बिना परिणाम के मानचित्र परिणाम आउटपुट करने का कोई तरीका है? (आपको पता है कि शफल चरण में बहुत सारे बैंडविड्थ और सीपीयू/मेमोरी संसाधन हैं) – Breakinen

+0

मुझे लगता है कि थॉमस के जवाब ने भी इस सवाल को हल किया :-) –

+0

पहचान मैपर का उपयोग फॉलो-ऑन रेड्यूसर के साथ या उसके बिना किया जा सकता है। यदि आप कम से कम चरण तक सीधे कूदने के लिए पहचान मैपर का उपयोग करते हैं तो आपके पास अभी भी सॉर्ट-एंड-शफल और आई/ओ ओवरहेड है, इसलिए थॉमस द्वारा उल्लिखित विधि का उपयोग करने का सही तरीका है यदि आपको रेड्यूसर की आवश्यकता नहीं है। – omnisis

4

जब आप केवल टर्मिनल से मानचित्रकारों से काम शुरू करने के लिए की जरूरत काफी मददगार हो सकता है।

-D mapred.reduce.tasks=0 

तो परिणाम आदेश के बाद किया जाएगा:: आप परोक्ष Hadoop जार आदेश में 0 reducers specifing द्वारा reducers बंद कर सकते हैं

hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir 

पिछड़े संगत होना करने के लिए, Hadoop भी "-reduce कोई नहीं का समर्थन करता है "विकल्प, जो" -D mapred.reduce.tasks = 0 "के बराबर है।

+0

अब हैडोप -D mapred.reduce.tasks के लिए एक मूल्यह्रास चेतावनी देता है और -D मैड्रिडस का उपयोग करने की अनुशंसा करता है। इसके बजाय job.reduce। – Adam

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