我正在努力完成一项学校作业,我必须让mrjob MapReduce类为每个文件在一行上输出一个JSON对象,输出包含当前文件的信息
让我们考虑使用MR作业JapReduce类来计算文件中的字符、单词和行数的一般示例。
%%writefile textstats.py
from mrjob.job import MRJob
class TextStats(MRJob):
def mapper(self, _, line):
yield "words", len(line.lower().split())
yield "chars", len(line)
yield "lines", 1
def combiner(self, key, counts_iter):
yield key, sum(counts_iter)
def reducer(self, key, counts_iter):
yield key, sum(counts_iter)
if __name__ == '__main__':
TextStats.run()
使用我的两个测试文本文件作为输入时,该代码的输出为:
"chars" 849
"lines" 14
"words" 140
如何编辑该类,使其输出如下
{"file_name" : "test1.txt", "chars" : 505, "lines" : 8, "words" : 80}
{"file_name" : "test2.txt", "chars" : 344, "lines" : 6, "words" : 60}
我知道您可以通过以下方式获取文件名:
import os
file_name = os.getenv('mapreduce_map_input_file')
谢谢你的建议
目前没有回答
相关问题 更多 >
编程相关推荐