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.
Czyli będzie czytać z wielu folderów w jednym folderze i rekurencyjnie wiele plików w każdym z podfolderów ?? – JudyJiang
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
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