Добавление jar через распределенный кеш
Я добавляю файл.jar в путь к классу с помощью распределенного кэша:
DistributedCache.addFileToClassPath(new Path("binary/tools.jar"), job.getConfiguration());
Я не уверен, является ли addFileToClassPath() правильным API для добавления файлов.jar в путь к классам. Когда я пытаюсь получить путь к классу из картографа, я не вижу добавленную банку. Путь к классам содержит рабочий каталог для задания (jobcache dir), но в него не входит jar, распространяемый через распределенный кэш.
Properties prop = System.getProperties();
System.out.println("The classpath is: " + prop.getProperty("java.class.path", null));
Я попытался addArchiveToClassPath() тоже.. Это не сработало..
Я что-то пропустил?
Спасибо,
2 ответа
Проблема была в пути. addFileToClassPath()
или же addArchiveToClassPath()
принимает только абсолютный путь в качестве входных данных. Файл binary/tools.jar является относительным и, следовательно, не работает. Мне нужно указать путь как /user/<username>/binary/tools.jar..
Теперь все отлично работает. Четное hdfs://<hostname>:port/user/..
выходит из строя.
Спасибо вам всем..
Это баночка, которую вы добавляете в путь к классам в локальной файловой системе или в HDFS?
DistributedCache ожидает, что указанный вами путь будет в HDFS