Hadoop 如何设计MapReduce伪代码来计算单词出现的文档数?
我需要知道这个问题的答案,但我需要一些帮助,因为我想不出答案。谢谢你抽出时间 如何修改映射器函数,以便程序计算每个不同单词的文档频率(即包含该单词的文档数量) 我的解决方案,但我不知道它是否正确Hadoop 如何设计MapReduce伪代码来计算单词出现的文档数?,hadoop,mapreduce,Hadoop,Mapreduce,我需要知道这个问题的答案,但我需要一些帮助,因为我想不出答案。谢谢你抽出时间 如何修改映射器函数,以便程序计算每个不同单词的文档频率(即包含该单词的文档数量) 我的解决方案,但我不知道它是否正确 class MAPPER method MAP(docid i, doc d) for all term t ∈ doc d do for all document d ∈ doc d do EMIT(term t, count + 1) 我希望以下步骤可以帮助您。我只
class MAPPER
method MAP(docid i, doc d)
for all term t ∈ doc d do
for all document d ∈ doc d do
EMIT(term t, count + 1)
我希望以下步骤可以帮助您。我只是简单地告诉你这个想法,你可以把它转换成一个算法
- 首先,您必须找到正在进行的输入拆分的文件名
由映射器类的
方法中的映射器处理。参考 下面的片段setup()
String fileName = ((FileSplit) context.getInputSplit()).getPath().toString();
- 从Mapper类的
方法中,将每个单词作为键和 值作为与setup()和int中的文件名相关的字符串 值1map()
- 从Reducer类的
方法中,为每个不同的单词 您将获得每个字符串将包含的字符串列表 对应的文件名和计数1reduce()
- 迭代每个键的值列表,并拆分每个值, 然后将文件名存储在一个不重复的本地集合中,如HashSet 并对计数1求和
- 在对值列表进行迭代之后,您将得到所有值的总和 计数1,并且也是一个哈希集,该哈希集具有当前数据的不同文件名 钥匙这里HashSet的大小将是 钥匙
- 从reducer发出关键字、字数和文档频率,然后重置sum变量和HashSet
String fileName = ((FileSplit) context.getInputSplit()).getPath().toString();