Как получить имя входного файла в MRjob

Я пишу функцию карты с помощью mrjob. Мой вход будет поступать из файлов в каталоге HDFS. Имена файлов содержат небольшую, но важную информацию, которая отсутствует в файлах. Есть ли способ узнать (внутри функции карты) имя входного файла, из которого происходит данная пара ключ-значение?

Я ищу эквивалент этого кода Java:

FileSplit fileSplit = (FileSplit)reporter.getInputSplit();
String fileName = fileSplit.getPath().getName();

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

2 ответов


map.input.file свойство даст имя входного файла.

по словам Hadoop-Окончательное Руководство

к свойствам можно получить доступ из конфигурации задания, полученной в старом API MapReduce, предоставив реализацию метода configure() для Mapper или Reducer, где конфигурация передается в качестве аргумента. В новом API эти свойства могут быть доступны из объекта контекста, переданного всем методам Картограф или редуктор.


Если вы используете в Hadoop 2.x С Python:

file_name = os.environ['mapreduce_map_input_file']