我正在使用mrjob编写一个map函数。我的输入将来自HDFS目录中的文件。文件的名称包含文件中不存在的小但关键的片段信息。有没有办法学习(在地图函数内)输入文件的名称,给定的键值对来自哪个?
我正在寻找相当于这个Java代码:
FileSplit fileSplit = (FileSplit)reporter.getInputSplit();
String fileName = fileSplit.getPath().getName();
提前致谢!
答案 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']