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类的
    map()
    方法中,将每个单词作为键和 值作为与setup()和int中的文件名相关的字符串 值1

  • 从Reducer类的
    reduce()
    方法中,为每个不同的单词 您将获得每个字符串将包含的字符串列表 对应的文件名和计数1
  • 迭代每个键的值列表,并拆分每个值, 然后将文件名存储在一个不重复的本地集合中,如HashSet 并对计数1求和
  • 在对值列表进行迭代之后,您将得到所有值的总和 计数1,并且也是一个哈希集,该哈希集具有当前数据的不同文件名 钥匙这里HashSet的大小将是 钥匙
  • 从reducer发出关键字、字数和文档频率,然后重置sum变量和HashSet

为什么要删除我的标签?
String fileName = ((FileSplit) context.getInputSplit()).getPath().toString();