में कस्टम कॉन्फ़िगरेशन मानों का प्रचार करना क्या सेट करने के लिए कोई तरीका है और (बाद में) मानचित्र/घटा के दौरान हडोप में कस्टम कॉन्फ़िगरेशन ऑब्जेक्ट प्राप्त करें?हडोप
उदाहरण के लिए, एक ऐसा एप्लिकेशन मानें जो एक बड़ी फ़ाइल को प्रीप्रोकैस करता है और गतिशील रूप से फ़ाइल से संबंधित कुछ विशेषताओं को निर्धारित करता है। इसके अलावा, मान लें कि उन विशेषताओं को एक कस्टम जावा ऑब्जेक्ट में सहेजा जाता है (उदा।, Properties
ऑब्जेक्ट, लेकिन विशेष रूप से नहीं, क्योंकि कुछ स्ट्रिंग नहीं हो सकते हैं) और बाद में प्रत्येक मानचित्र और कम नौकरियों के लिए आवश्यक हैं।
एप्लिकेशन इस कॉन्फ़िगरेशन को "प्रचारित" कैसे कर सकता है, ताकि जब आवश्यक हो तो प्रत्येक मैपर और रेड्यूसर फ़ंक्शन इसका उपयोग कर सके?
एक दृष्टिकोण उदाहरण के लिए JobConf
वर्ग के set(String, String)
विधि का उपयोग करें और,, विन्यास वस्तु दूसरा पैरामीटर के माध्यम से एक JSON
स्ट्रिंग के रूप में धारावाहिक पारित करने के लिए हो सकता है, लेकिन यह एक हैक की बहुत अधिक हो सकता है और उसके बाद उपयुक्त JobConf
उदाहरण प्रत्येक Mapper
और Reducer
द्वारा किसी भी तरह से एक्सेस किया जाना चाहिए (उदाहरण के लिए, earlier question में सुझाए गए एक जैसा दृष्टिकोण)।
यह ठीक है अगर सभी गुण स्ट्रिंग हैं। मेरे उपयोग के मामले में, कुछ नहीं हैं, वे (बल्कि जटिल) कस्टम जावा ऑब्जेक्ट्स हैं जो मानचित्र और भागों को कम करने के लिए आवश्यक हैं। लेकिन जवाब के लिए वैसे भी +1। :-) – PNS
@PNS ठीक है अगर आप गैर-स्ट्रिंग ऑब्जेक्ट को पास करना चाहते हैं, तो आप स्ट्रिंग्स में कनवर्ट करने के लिए हमेशा अपनी ऑब्जेक्ट्स को क्रमबद्ध कर सकते हैं और इन स्ट्रिंग्स को 'कॉन्फ़िगरेशन' पर पास कर सकते हैं, और फिर मैपर/रेड्यूसर डी-सीरियलाइज में वस्तुओं। मुझे नहीं लगता कि इस तरह के आसपास वस्तुओं को पारित करने के लिए कोई मूल तरीका है।आप शायद ऑब्जेक्ट को फ़ाइल में भी क्रमबद्ध कर सकते हैं और इसे एचडीएफएस में डाल सकते हैं और फिर इस फ़ाइल को 'वितरित कैश' के साथ शायद प्राप्त कर सकते हैं। –
हां, serialization वैसे भी आवश्यक लगता है, क्योंकि MapReduce एक वितरित अनुप्रयोग है। – PNS