Python 如何在MRjob中获取输入文件的名称
我正在使用mrjob编写一个映射函数。我的输入将来自HDFS目录中的文件。文件名包含文件中不存在的小而重要的信息。有没有办法(在map函数中)了解输入文件的名称(给定的键值对来自该文件) 我正在寻找这段Java代码的等效代码:Python 如何在MRjob中获取输入文件的名称,python,hadoop,hadoop-streaming,mrjob,Python,Hadoop,Hadoop Streaming,Mrjob,我正在使用mrjob编写一个映射函数。我的输入将来自HDFS目录中的文件。文件名包含文件中不存在的小而重要的信息。有没有办法(在map函数中)了解输入文件的名称(给定的键值对来自该文件) 我正在寻找这段Java代码的等效代码: FileSplit fileSplit = (FileSplit)reporter.getInputSplit(); String fileName = fileSplit.getPath().getName(); 提前谢谢 map.input.file属性将给出输入文
FileSplit fileSplit = (FileSplit)reporter.getInputSplit();
String fileName = fileSplit.getPath().getName();
提前谢谢
map.input.file
属性将给出输入文件名
根据
属性可以从作业的配置中访问,这些配置是通过为Mapper或Reducer提供configure()方法的实现在旧的MapReduce API中获得的,其中配置作为参数传入。在新的API中,可以从传递给映射器或Reducer的所有方法的上下文对象访问这些属性
如果将HADOOP 2.x与Python一起使用,请执行以下操作:
file_name = os.environ['mapreduce_map_input_file']
更多信息可以从Praveen之前对类似问题的回答中找到-谢谢,@PraveenSripati和@ChrisWhite,这正是我需要的!要明确地向未来的访问者声明它:
fileName=os.environ['map\u input\u file']
就是这样。这些是在线列出的还是我必须浏览源代码才能找到它们@masu,我认为这些属性是Hadoop流媒体框架自动设置的: