如何在MRjob中获取输入文件的名称

时间:2012-07-11 14:26:49

标签: python hadoop hadoop-streaming mrjob

我正在使用mrjob编写一个map函数。我的输入将来自HDFS目录中的文件。文件的名称包含文件中不存在的小但关键的片段信息。有没有办法学习(在地图函数内)输入文件的名称,给定的键值对来自哪个?

我正在寻找相当于这个Java代码:

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

提前致谢!

2 个答案:

答案 0 :(得分:6)

map.input.file属性将提供输入文件名。

根据Hadoop - The Definitive Guide

  

可以通过为Mapper或Reducer提供configure()方法的实现,从旧MapReduce API中获取的作业配置访问属性,其中配置作为参数传递。在新的API中,可以从传递给Mapper或Reducer的所有方法的上下文对象访问这些属性。

答案 1 :(得分:6)

如果您在Python中使用 HADOOP 2.x

file_name = os.environ['mapreduce_map_input_file']