2013-05-08 13 views

Odpowiedz

3

Możesz pobierać dane wejściowe z wielu katalogów i plików za pomocą operatora *****. Najprawdopodobniej jest to spowodowane tym, że argument "arg [0]" nie jest poprawny i dlatego nie znajduje plików.

Jako alternatywę można również użyć metody InputFormat.addInputPath lub, jeśli potrzebne są osobne formaty lub odwzorowania, można użyć klasy MultipleInputs.

Przykład podstawowy dodając ścieżkę

FileInputFormat.addInputPath(job, myInputPath); 

Oto przykład MultipleInputs

MultipleInputs.addInputPath(job, inputPath1, TextInputFormat.class, MyMapper.class); 
MultipleInputs.addInputPath(job, inputPath2, TextInputFormat.class, MyOtherMapper.class); 

Ta druga kwestia jest bardzo podobna i ma dobre odpowiedzi, Hadoop to reduce from multiple input formats.

+0

Czyli będzie czytać z wielu folderów w jednym folderze i rekurencyjnie wiele plików w każdym z podfolderów ?? – JudyJiang

+0

Myliłem się i zaktualizowałem swoją odpowiedź, aby to odzwierciedlić. Zgaduję, że twoje "arg [0]" jest złe. skąd go używasz? jeśli jest to wiersz poleceń, możesz potrzebować $ arg [0], jeśli jest to kod, powinieneś użyć podejścia wielodrożnego – greedybuddha

+0

Jest to mój kod java. Użyłem FileInputFormat.setInputPaths (conf, new Path (args [0]); to jest args [0] i coś po nim, że powinienem zastąpić część katalogów wielu? – JudyJiang

Powiązane problemy