【发布时间】:2020-12-14 10:40:44
【问题描述】:
我收到了一个大文本文件,我想找出以每个字母开头的不同单词的数量。我正在尝试了解 map 和 reduce 函数的输入和输出值。
我理解一个不需要处理重复单词的简单问题:使用 map reduce 确定字母表中每个字母在文本中开始单词的频率。
Map input: <0, “everyday i am city in tomorrow easy over school i iterate tomorrow city community”>
Map output: [<e,1>,<i,1>,<a,1>,<c,1>,<i,1>,<t,1>,<e,1>,<o,1>,<s,1>,<i,1>,<i,1>,<t,1>,<c,1>,<c,1>]
Reduce input: <a,[1]>,<c,[1,1,1]>,<e,[1,1]>,<i,[1,1,1,1]>,<o,[1]>,<s,[1]>,<t,[1,1]>
Reduce output: [<a,1>,<c,3>,<e,2>,<i,4>,<o,1>,<s,1>,<t,2>]
对于上述问题,单词“i”“city”和“tomorrow”出现了不止一次,所以我的最终输出应该是:
Reduce output: [<a,1>,<c,2>,<e,2>,<i,3>,<o,1>,<s,1>,<t,1>]
我不确定如何确保在上述问题中删除重复的单词(是在预处理阶段完成还是在 map 或 reduce 函数上实现)。如果能帮助我理解地图并减少新问题的输出,我将不胜感激。
【问题讨论】:
标签: mapreduce