2012-07-11 4 views
6

में इनपुट फ़ाइल का नाम कैसे प्राप्त करें मैं mrjob का उपयोग कर एक मानचित्र फ़ंक्शन लिख रहा हूं। मेरा इनपुट एचडीएफएस पर निर्देशिका में फाइलों से आएगा। फ़ाइलों के नामों में एक छोटी लेकिन महत्वपूर्ण टुकड़ा जानकारी होती है जो फाइलों में मौजूद नहीं होती है। इनपुट फ़ाइल का नाम सीखने का कोई तरीका है (एक मानचित्र फ़ंक्शन के अंदर) जिसमें से एक दिया गया कुंजी-मूल्य जोड़ी आता है?एमआरओबी

मैं इस जावा कोड के किसी समान की तलाश में हूँ:

FileSplit fileSplit = (FileSplit)reporter.getInputSplit(); 
String fileName = fileSplit.getPath().getName(); 

अग्रिम धन्यवाद!

उत्तर

6

map.input.file संपत्ति इनपुट फ़ाइल नाम देगी।

Hadoop - The Definitive Guide

गुण काम के विन्यास से पहुँचा जा सकता, मैपर या प्रसारण, जहां विन्यास पारित हो जाता है के लिए विधि कॉन्फ़िगर() के एक कार्यान्वयन प्रदान करके पुराने MapReduce एपीआई में प्राप्त के अनुसार

एक तर्क के रूप में। नए एपीआई में, इन गुणों को मैपर या रेड्यूसर के सभी तरीकों से पारित संदर्भ वस्तु से एक्सेस किया जा सकता है।

+1

और अधिक जानकारी एक सवाल इस के समान करने के लिए प्रवीण के पिछले जवाब से पाया जा सकता है - http://stackoverflow.com/ प्रश्न/744 9 756/प्राप्त-इनपुट-फ़ाइल-नाम-इन-स्ट्रीमिंग-हैडऑप-प्रोग्राम –

+4

धन्यवाद, @ प्रवीणप्रतिती और @ क्रिसवाइट, यह वही है जो मुझे चाहिए! भविष्य के आगंतुकों के लिए स्पष्ट रूप से यह बताने के लिए: 'fileName = os.environ [' map_input_file ']' चाल है। – Bolo

5

आप Hadoop 2.x उपयोग कर रहे हैं अजगर के साथ:

file_name = os.environ['mapreduce_map_input_file'] 
+0

क्या ये कहीं ऑनलाइन सूचीबद्ध हैं या क्या मुझे उन्हें खोजने के लिए स्रोत कोड ब्राउज़ करना है ?! – masu

+1

यह काम नहीं करता है – Dinesh

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

  • कोई संबंधित समस्या नहीं^_^