Как мне обратиться к локальному файлу hdfs из mapreduce? - PullRequest
2 голосов
/ 31 января 2012

Я бы хотел сослаться на файл, который находится в кластере hdfs в hadoop из моего скрипта mapreduce.

Возможно ли сделать это, не используя полный путь (hdfs: // ip / path / to / file), а вместо этого используя локальную ссылку / path / to / file?Я использую Java и попробовал что-то вроде:

    File file = new File(stringPathToFile);

Но это, похоже, относится к локальной файловой системе.

Заранее спасибо!

1 Ответ

4 голосов
/ 31 января 2012

Вы должны получить доступ к файлу с помощью Hadoop API . Вы, вероятно, ищете open . Это даст вам поток, который действует как общий открытый файл. File не знает, как обращаться с файлами в HDFS.

Я нашел пример кода , который показывает, как это сделать.


Редактировать: После прочтения вашего вопроса я заметил, что вы получаете доступ к нему из задания MapReduce. Если файл достаточно мал (может находиться на диске одного компьютера), вам настоятельно рекомендуется использовать DistributedCache . Это передает файл на каждый узел, выполняющий задание, чтобы к нему можно было быстро получить доступ. Считывание HDFS с помощью нескольких картографических устройств может стать причиной узких мест в полосе пропускания сети в вашей работе.

...