如何使用mrjob编写统计文件单词首字母出现频率的任务
mrjob单词首字母频率统计实现方案
修改说明
仅需要调整mapper阶段的输出键即可实现需求,reducer逻辑不需要改动,核心调整点:
- 取每个单词的第一个字符作为统计键
- 对首字母统一转为大写,满足大小写不区分的统计要求
- 增加非空判断,避免分割出空字符串时出现索引报错
完整修改后代码
from mrjob.job import MRJob class Job(MRJob): def mapper(self, Key, value): for word in value.strip().split(): # 跳过空单词避免索引错误 if not word: continue # 取首字母转大写作为统计key first_char = word[0].upper() yield first_char, 1 def reducer(self, Key, values): yield Key, sum(values) if __name__ == '__main__': Job.run()
效果说明
输入文本中所有首字母为a/A的单词都会被统计到A的计数下,首字母为c/C的单词都会被统计到C的计数下,最终输出格式符合C 3的需求。如果需要输出小写统计结果,将代码中的upper()替换为lower()即可。
内容的提问来源于stack exchange,提问作者CKZ
相关产品推荐
相关产品推荐

