2013-11-20 10 views
6

पर इनपुट के रूप में निर्देशिका प्रदान करें मैं क्लौडेरा हैडोप का उपयोग कर रहा हूं। मैं सरल मैड्रिडस प्रोग्राम चलाने में सक्षम हूं जहां मैं मैपरेडस प्रोग्राम में इनपुट के रूप में एक फ़ाइल प्रदान करता हूं।हडोप: MapReduce नौकरी

इस फ़ाइल में अन्य सभी फ़ाइलों को मैपर फ़ंक्शन द्वारा संसाधित करने के लिए शामिल किया गया है।

लेकिन, मैं एक बिंदु पर अटक गया हूं।

/folder1 
    - file1.txt 
    - file2.txt 
    - file3.txt 

मैं कैसे इतना है कि यह है कि निर्देशिका के अंदर प्रत्येक फ़ाइल को प्रोसेस शुरू कर सकते हैं, "/folder1" के रूप में MapReduce कार्यक्रम के लिए इनपुट पथ निर्दिष्ट कर सकते हैं?

कोई विचार?

संपादित करें:

1) Intiailly, मैं inputFile.txt mapreduce कार्यक्रम के लिए इनपुट के रूप में प्रदान की है। यह पूरी तरह से काम कर रहा था।

>inputFile.txt 
file1.txt 
file2.txt 
file3.txt 

2) लेकिन अब, इनपुट फ़ाइल देने के बजाय, मैं कमांड लाइन पर तर्क [0] के रूप में एक इनपुट निर्देशिका प्रदान करना चाहता हूं।

hadoop jar ABC.jar /folder1 /output 
+0

काम कर रहे है आप कैसे सबमिट कर रहे हैं/काम बनाने पर एक नज़र है? –

+0

संपादन की जांच करें ..... –

+0

हां ऐसा काम करता है, आपका प्रश्न क्या है? –

उत्तर

2

आप FileSystem.listStatus का उपयोग दिया dir से फ़ाइल सूची प्राप्त करने के सकता है, कोड के रूप में नीचे हो सकता है:

//get the FileSystem, you will need to initialize it properly 
FileSystem fs= FileSystem.get(conf); 
//get the FileStatus list from given dir 
FileStatus[] status_list = fs.listStatus(new Path(args[0])); 
if(status_list != null){ 
    for(FileStatus status : status_list){ 
     //add each file to the list of inputs for the map-reduce job 
     FileInputFormat.addInputPath(conf, status.getPath()); 
    } 
} 
+0

मानचित्र मानचित्र में हम इसे कैसे एक्सेस कर सकते हैं? क्या यह सीधे फाइलों की सामग्री वापस कर देगा? –

11

समस्या FileInputFormat इनपुट पथ निर्देशिका में रिकर्सिवली फ़ाइलों को पढ़ने नहीं करता है।

समाधान: कोड

FileInputFormat.setInputDirRecursive(job, true); निम्न का उपयोग कर अपने मानचित्र में नीचे लाइन से पहले कम कोड

FileInputFormat.addInputPath(job, new Path(args[0]));

आप देख सकते हैं here जो संस्करण के लिए यह तय किया गया था।

1

आप क्रम में HDFS wildcards का उपयोग एक से अधिक फ़ाइलों

हां, तो समाधान प्रदान करने के लिए कर सकते हैं:

hadoop jar ABC.jar /folder1/* /output 

या

hadoop jar ABC.jar /folder1/*.txt /output 
0

उपयोग MultipleInputs वर्ग।

MultipleInputs. addInputPath(Job job, Path path, Class<? extends InputFormat> 
inputFormatClass, Class<? extends Mapper> mapperClass) 

code

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