2012-03-15 10 views
6

के साथ एक मैप्रिडस जॉब मैं मानचित्र के साथ एवरो का उपयोग करने के बारे में बहुत उलझन में हूं और अनुसरण करने के लिए अच्छे ट्यूटोरियल नहीं ढूंढ पा रहा हूं।सादा पाठ इनपुट और एवरो आउटपुट

ऐसा लगता है कि AvroJob और AvroMapper जैसी कक्षाएं समस्याओं के लिए तैयार हैं जब इनपुट और आउटपुट दोनों एरो डेटा फाइलें हैं। आपके इनपुट के बारे में क्या सादा पाठ है?

विशेष रूप से:

मेरे नक्शाकार इनपुट के रूप में LongWritable कुंजी और पाठ मान लेता है। यह टेक्स्ट कुंजी और MyAvroRecord मानों को उत्सर्जित करता है।

मेरा रेड्यूसर टेक्स्ट कुंजी और इनपुट के रूप में MyAvroRecords के इटरेटर लेता है, और टेक्स्ट कुंजी और MyAvroRecord मानों को उत्सर्जित करता है।

मैं आउटपुटफॉर्मैट कैसे प्राप्त करूं जो इन पाठ कुंजी और MyAvroRecord मानों को फ़ाइल में लिखने के लिए लिखेंगे?

चीयर्स, डेव

उत्तर

6

ठीक है, तो मैं इस पता लगा।

टेक्स्ट कुंजी और MyAvroRecord मानों को आउटपुट करने वाले मैपर की बजाय, मुझे उस व्यक्ति की आवश्यकता होती है जिसने एवरोकी कुंजी और एवरोवल्यू मानों का उत्पादन किया हो। वह अपने परिणामों को सीधे एवर्रोड्यूसर पर खिलाने में सक्षम था, और मैं आउटपुट को संभालने के लिए केवल AvroJob.setOutputSchema() का उपयोग कर सकता था (मुझे बिल्कुल आउटपुटफॉर्मेट लागू करने की आवश्यकता नहीं थी)।

+0

हाय डेव, मैं विपरीत में sth करने के लिए कोशिश कर रहा हूँ। मेरा इनपुट टेक्स्ट और आउटपुट जेनेरिक रिकॉर्ड है। मैं AvroJob के लिए एक एवरो इनपुट स्कीमा स्थापित करने का प्रयास करता हूं और फिर जेनरेट रिकॉर्ड की स्कीमा होने के लिए आउटपुट स्कीमा सेट करता हूं। लेकिन मुझे नहीं पता कि इनपुट स्कीमा को कैसे लपेटें ताकि एवरोबोब समझ सके कि यह सादा पाठ है। क्या मुझे बस setInputSchema() का उपयोग कुछ भी नहीं करना चाहिए? –

0

आने का एक और तरीका यह हो सकता है: मैपर के आउटपुट को एवरोकी और एवरोवालू नहीं होना चाहिए। यह आपके सामान्य आउटपुट प्रकार हो सकते हैं, जो आपके रेड्यूसर में इनपुट बन जाते हैं। Reducer में हम एवरो रूपांतरण कर सकते हैं। आउटपुट प्रारूप प्रकार को एवरो सेट करके।

संबंध है, सुजॉय

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