Ограничить Hadoop MapReduce определенным расширением файла

Я пытаюсь запустить задание MapReduce в своем кластере, которое работает только с определенным расширением файла. У нас есть куча разнородных данных, которые находятся в кластере, и для этого конкретного задания я хочу выполнить только .jpg. Есть ли способ сделать это, не ограничивая его в картографе. Кажется, что это должно быть легко сделать, когда вы выполняете задание. Я думаю что-то вроде Hadoop fs JobName /users/myuser/data/*.jpg /users/myuser/output.


person Matt E    schedule 01.05.2012    source источник


Ответы (1)


Ваш пример должен работать так, как написано, но вам нужно проверить формат ввода, который вы вызываете методом setInputPaths(Job, String), так как это разрешит строку glob "/users/myuser/data/*.jpg " в отдельные файлы jpg в /users/myuser/data.

person Chris White    schedule 01.05.2012
comment
Вы правы, есть ли способ сделать это рекурсивным? Я хочу запустить его из корня HDFS. - person Matt E; 01.05.2012
comment
Похоже, это распространенная проблема, и ее исправили. Вот ссылка ссылка. Спасибо за ответ на мой оригинальный вопрос! - person Matt E; 01.05.2012
comment
Если у вас есть фиксированное количество каталогов, вы можете использовать рекурсию: /users/myuser/data/*/*/*.jpg будет соответствовать всем файлам jpg глубиной 2 каталога из /users/myuser/data/. Однако, как вы указываете, глобусирование переменной глубины (например, /users/myuser/data/**/*.jpg) еще не поддерживается. - person Chris White; 01.05.2012