के रूप में उपयोग करते हुए मुझे पता है कि टैब क्षेत्रों के लिए डिफ़ॉल्ट इनपुट विभाजक है:Hadoop 2.4.0 स्ट्रीमिंग सामान्य पार्सर विकल्प टैब विभाजक
stream.map.output.field.separator=\t (or)
stream.map.output.field.separator="\t"
:
stream.map.output.field.separator
stream.reduce.input.field.separator
stream.reduce.output.field.separator
mapreduce.textoutputformat.separator
लेकिन अगर मैं सामान्य पार्सर विकल्प लिखने की कोशिश
यह जांचने के लिए कि कैसे हडूप अलग-अलग स्पेस वर्णों को "\ t, \ n, \ f" जैसे विभाजक के रूप में उपयोग किया जाता है। मैंने देखा कि हैडोप इसे \ t चरित्र के रूप में पढ़ता है लेकिन "" टैब स्पेस नहीं है। मैं कम करने (अजगर) में प्रत्येक पंक्ति मुद्रण द्वारा यह जाँच के रूप में उपयोग में लिखा है:
print (key,value1,value2,sep='\t',end='\n')
आदेश का उपयोग key value1 value2
:
sys.stdout.write(str(line))
मेरे नक्शाकार के रूप में कुंजी/मान जोड़े उत्सर्जन करता है।
तो मैं अपने कम करने की उम्मीद के रूप में प्रत्येक पंक्ति को पढ़ने के लिए: बहुत key value1 value2
, लेकिन इसके बजाय sys.stdout.write(str(line))
मुद्रित:
key value1 value2 \\with trailing space
Hadoop streaming - remove trailing tab from reducer output से, मैं समझ गया अनुगामी अंतरिक्ष की वजह से mapreduce.textoutputformat.separator
नहीं की स्थापना की और छोड़ दिया जा रहा है कि जैसे अकरण।
key value1 value2
stream.map.output.field.separator=\t
से विभाजक पढ़ के रूप में मूल्य के रूप में
:
तो, यह मेरी धारणा है कि मेरी कुल नक्शा उत्पादन माना Hadoop की पुष्टि की "" टैब स्पेस स्वयं।
कृपया मुझे इस व्यवहार को समझने में सहायता करें और यदि मैं चाहूं तो एक विभाजक के रूप में मैं \ t का उपयोग कैसे कर सकता हूं।
मैं अपने तर्क में कोई फ़ील्ड नंबर नहीं दे रहा हूं और AFAI समझ गया है, आपके द्वारा उल्लिखित समस्या केवल तब उत्पन्न होती है जब मैं फ़ील्ड नंबर प्रदान करता हूं और यदि मैं अपने इच्छित फ़ील्ड नंबर से कम देता हूं। मैं "विभाजन से संबंधित फ़ील्ड" के बारे में हिस्सा नहीं समझ पाया। हालांकि मैं "पाइपमैपर.जावा" में दिलचस्प रूप से हैडोप 2.4.0 स्रोत कोड को डिबग कर रहा था: लाइन 'mapOutputFieldSeparator = job.get ("stream.map.output.field.separator", "\ t")। GetBytes ("यूटीएफ -8"); जब मैं तर्क के बिना 'stream.map.output.field.separator = \ t' तर्क के रूप में' tAB' (सफेद वर्ण) देता हूं तो 'आउटपुट 't' omitting \ character आउटपुट करता है। – annunarcist
नौकरी जावा कोड में, "\ t" के पैरामीटर "stream.map.output.field.separator" मान को जोड़ने का प्रयास करें। यह सुनिश्चित नहीं है कि इसे क्यों उठाया जा रहा है, जहां – Ramzy
यह एक स्ट्रीमिंग नौकरी है। हम केवल स्क्रिप्ट/एक्जिक्यूटिव के रूप में मैपर/रेड्यूसर पास कर सकते हैं और मैं अपने मैपर और रेड्यूसर के लिए पाइथन स्क्रिप्ट का उपयोग कर रहा हूं।हम यहां जॉब ऑब्जेक्ट तक नहीं पहुंच सकते हैं। – annunarcist