Можно ли использовать несколько банок, чтобы указать работу в hadoop?

У меня обычно есть общие / общие библиотеки и фактический код задания в разных файлах jar. Можно ли перекомпилировать только один файл JAR задания для выполнения команды hadoop hadoop jar asd? Если нет, то есть ли обходной путь для упрощения упаковки банок?

2 ответа

Решение

Я использую Ant, чтобы сделать работу банкой. Чтобы включить все общие / общие библиотеки в файл buildConfig.xml, необходимо добавить следующую строку:

<zipgroupfileset dir="pathToAllCommonAndSharedLibraries" includes="**/*.jar" />

Вот самый простой пример файла конфигурации сборки.

<?xml version="1.0" encoding="UTF-8"?>
<project name="Example.makejar" default="jar" basedir=".">
    <target name="jar">
        <jar destfile="Example.jar" basedir="bin">
            <manifest></manifest>
            <zipgroupfileset dir="pathToAllCommonAndSharedLibraries" includes="**/*.jar" />
        </jar>
    </target>
</project>

Я не уверен насчет поддержки hadoop для этого, я спрошу позже, но вот обходной путь: если вы используете maven для создания ваших рабочих проектов, используйте плагин maven shade или плагин maven сборка, чтобы встроить все ваши зависимости в jar-файл, так что вы развернете только один файл.

Другие вопросы по тегам