Как я могу получить путь к файлу для фрагмента данных в картографе задания Mapreduce?

#java #mapreduce #hadoop2

#java #mapreduce #hadoop2

Вопрос:

У меня есть задание mapreduce, где путь к файлу ввода равен: /basedirectory/*/*.txt

Внутри basedirectory у меня есть разные вложенные папки (CaseA, CaseB и т.д.), Каждая из которых содержит текстовые файлы hdfs.

На этапе сопоставления задания я хочу выяснить, откуда именно взялся фрагмент данных (например, CaseA). Как я могу этого добиться?

Я сделал нечто подобное для заданий mapreduce с более чем 1 входной таблицей hbase, где я использую context.getInputSplit().getTableName(), чтобы найти фактическое имя таблицы, но не уверен, что делать для входных файлов HDFS.

Ответ №1:

Вы можете получить разделение входных данных, используя context.getInputSplit() (где context это mapper.context ), а затем использовать .getPath() метод в inputSplit , чтобы вернуть путь к файлу.