所有
我正在创建一个界面,用于处理一些海量数据并生成arff文件,以便进行一些机器学习。我目前可以收集这些功能 - 但我无法将它们与它们派生自的文件相关联。我目前正在使用Dumbo
def mapper(key, value):
#do stuff to generate features
有没有方便的方法来确定打开的文件名并将其内容传递给mapper函数?
再次感谢。 -SAM
答案 0 :(得分:1)
如果您能够访问作业配置属性,则mapreduce.job.input.file
属性应包含当前文件的文件名。
我不确定你是如何在Dumbo / Mrjob中获得这些属性的 - 文档指定句点(在conf名称中)被替换为下划线,然后查看PipeMapRed.java的源代码,看起来像一切将单个作业conf属性设置为env变量 - 因此请尝试访问名为mapreduce_job_input_file
的env变量
http://hadoop.apache.org/mapreduce/docs/r0.21.0/mapred_tutorial.html#Configured+Parameters
答案 1 :(得分:1)
如上所述here,您可以使用-addpath yes选项。
-addpath yes(将每个输入键替换为由相应输入文件和原始键的路径组成的元组)