Я пытаюсь использовать класс CombineFileInputFormat
с помощью инструмента Yelp MrJob для EMR. Рабочий процесс создается с использованием потоковой передачи Hadoop, и в документации MrJob указано, что класс CombineFileInputFormat
должен быть объединен в настраиваемый файл hadoop-streaming.jar
.
Для контекста, пожалуйста, следуйте этому вопросу.
В частности, мой вопрос: где конкретный класс CombinedInputFormat.class
должен быть связан или указан в hadoop-streaming.jar
?
Я попытался связать CombinedInputFormat.class
, добавив его в каталог org/apache/hadoop/streaming
и выполнив:
jar uvf my-hadoop-streaming.jar org/apache/hadoop/streaming
Если я это сделаю, запустится потоковый рабочий процесс, с опцией -inputformat CombinedInputFormat
Задание запустится на первом шаге и прервется с ошибкой:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/streaming/CombinedInputFormat (wrong name: CombinedInputFormat)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
...
Если я просто попытаюсь установить его в корневом пути с помощью:
jar uvf my-hadoop-streaming.jar CombinedInputFormat.class
Ошибка, которую я получаю:
-inputformat : class not found : CombinedInputFormat
Streaming Job Failed!
Как мне связать CombinedInputFormat.class, чтобы он был правильно принят и устранил ошибку NoClassDefFoundError
?