Должен ли файл быть в HDFS, чтобы использовать его в распределенном кеше? - PullRequest
2 голосов
/ 16 марта 2012

Я получаю

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: file:/path/to/my.jar, expected: hdfs://ec2-xx-xx-xx-xxx.compute-1.amazonaws.com

, если я пытаюсь добавить локальный файл в распределенный кеш в Hadoop.Когда файл находится в HDFS, я не получаю эту ошибку (очевидно, поскольку он использует ожидаемую FS).Есть ли способ использовать локальный файл в распределенном кеше без предварительного копирования его в hdfs?Вот фрагмент кода:

Configuration conf = job.getConfiguration();
FileSystem fs = FileSystem.getLocal(conf);
Path dependency = fs.makeQualified(new Path("/local/path/to/my.jar");
DistributedCache.addArchiveToClassPath(path, conf);

Спасибо

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

Сначала он должен быть в HDFS.Я собираюсь выйти на конечность здесь, но я думаю, что это потому, что файл "вытягивается" в локальный распределенный кэш ведомыми, а не выдвигаетсяПоскольку они извлекаются, у них нет возможности получить доступ к этому локальному пути.

0 голосов
/ 23 октября 2013

Файл может быть в локальной системе, hdfs, S3 или другом кластере. Вам нужно указать как

-файлы hdfs: // если файл в формате hdfs

по умолчанию предполагается локальная файловая система.

0 голосов
/ 16 марта 2012

Нет, я не думаю, что вы можете поместить что-либо в распределенный кеш, если он не находится в HDFS.Все задания Hadoop используют путь ввода / вывода относительно HDFS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...