Передать расположение файла в качестве значения для hasoop mapper? - PullRequest
1 голос
/ 25 февраля 2011

Можно ли передать расположение файлов в HDFS в качестве значения моему преобразователю, чтобы я мог запустить исполняемый файл для их обработки?

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

Другим подходом к этому может быть получение имени файла через FileSplit, это можно сделать с помощью следующего кода:

     FileSplit fileSplit = (FileSplit) context.getInputSplit();
 String filename = fileSplit.getPath().getName(); 

Надеюсь, это поможет

0 голосов
/ 26 февраля 2011

Да, вы можете создать файл с именами файлов в HDFS и использовать его в качестве входных данных для задания карты / сокращения. Вам нужно будет создать собственный сплиттер, чтобы обслуживать несколько имен файлов для каждого картографа. По умолчанию ваш входной файл будет разделен на блоки, и, вероятно, весь список файлов будет передан одному преобразователю.
Другим решением будет определить Ваш вклад как не разделяемый. В этом случае каждый файл будет передан в маппер, и вы сможете создать свой собственный InputFormat, который будет использовать всякий раз, когда вам потребуется логика для обработки файла - например, вызвать внешний исполняемый файл. Если вы пойдете по этому пути, фреймворк Hadoop позаботится о локальности данных.

...