2013-04-27 2 views
1

Это показывает, что он создал файлы в кэше. Но, когда я иду и смотрю на местоположение, файл отсутствует, и когда я пытаюсь прочитать из своего картографа, он показывает исключение File Not Found Exception.Распределенное кэширование в файле Hadoop не найдено Исключение

Это код, который я пытаюсь запустить:

JobConf conf2 = new JobConf(getConf(), CorpusCalculator.class); 
    conf2.setJobName("CorpusCalculator2"); 

    //Distributed Caching of the file emitted by the reducer2 is done here 
    conf2.addResource(new Path("/opt/hadoop1/conf/core-site.xml")); 
    conf2.addResource(new Path("/opt/hadoop1/conf/hdfs-site.xml")); 

    //cacheFile(conf2, new Path(outputPathofReducer2)); 

    conf2.setNumReduceTasks(1); 
    //conf2.setOutputKeyComparatorClass() 

    conf2.setMapOutputKeyClass(FloatWritable.class); 
    conf2.setMapOutputValueClass(Text.class); 


    conf2.setOutputKeyClass(Text.class); 
    conf2.setOutputValueClass(Text.class); 

    conf2.setMapperClass(MapClass2.class); 
    conf2.setReducerClass(Reduce2.class); 



    FileInputFormat.setInputPaths(conf2, new Path(inputPathForMapper1)); 
    FileOutputFormat.setOutputPath(conf2, new Path(outputPathofReducer3)); 

    DistributedCache.addCacheFile(new Path("/sunilFiles/M51.txt").toUri(),conf2); 
    JobClient.runJob(conf 

Журналы:

13/04/27 04:43:40 INFO filecache.TrackerDistributedCacheManager: Creating M51.txt in /tmp1/mapred/local/archive/-1731849462204707023_-2090562221_1263420527/localhost/sunilFiles-work-2204204368663038938 with rwxr-xr-x 

13/04/27 04:43:40 INFO filecache.TrackerDistributedCacheManager: Cached /sunilFiles/M51.txt as /tmp1/mapred/local/archive/-1731849462204707023_-2090562221_1263420527/localhost/sunilFiles/M51.txt 

13/04/27 04:43:40 INFO filecache.TrackerDistributedCacheManager: Cached /sunilFiles/M51.txt as /tmp1/mapred/local/archive/-1731849462204707023_-2090562221_1263420527/localhost/sunilFiles/M51.txt 

13/04/27 04:43:40 INFO mapred.JobClient: Running job: job_local_0003 

13/04/27 04:43:40 INFO mapred.Task: Using ResourceCalculatorPlugin : o 
[email protected] 

13/04/27 04:43:40 INFO mapred.MapTask: numReduceTasks: 1 

13/04/27 04:43:40 INFO mapred.MapTask: io.sort.mb = 100 

13/04/27 04:43:40 INFO mapred.MapTask: data buffer = 79691776/99614720 

13/04/27 04:43:40 INFO mapred.MapTask: record buffer = 262144/327680 

внутри configure():

Exception reading DistribtuedCache: java.io.FileNotFoundException: /tmp1/mapred/local/archive/-1731849462204707023_-2090562221_1263420527/localhost/sunilFiles/M51.txt (Is a directory) 

Inside setup(): /tmp1/mapred/local/archive/-1731849462204707023_-2090562221_1263420527/localhost/sunilFiles/M51.txt 

13/04/27 04:43:41 WARN mapred.LocalJobRunner: job_local_0003 

Пожалуйста, помогите мне, я искал решение для этого в течение последних 6 часов непрерывно, а завтра у меня есть подчинение. Большое спасибо.

+0

Какую версию hadoop вы используете? – Rags

+0

Также поделитесь своим полным кодом – Rags

ответ

0

Я решил эту проблему используя свойство copyMerge(), которое объединяет все файлы, присутствующие на разных машинах, в один файл и тот файл, который я смог успешно использовать. Если я использую обычный файл, он работает с ошибкой нг. спасибо за ваши ответы.

0

Возможно, вы захотите попробовать -files вариант, который проще. Чтобы использовать его, классу класса необходимо расширить конфигурацию и реализовать инструмент.

Например,

Hadoop баночка jarname.jar driverclass -файлы file1.xml, file2.txt

В преобразовател или редуктора:.

BufferedReader reader1 = new BufferedReader(new FileReader("file1.xml")); 
BufferedReader reader2 = new BufferedReader(new FileReader("file2.txt"));