Добавление 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

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