Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MapReduce:Mapper和Reducer可以共享变量吗?_Java_Hadoop_Mapreduce - Fatal编程技术网

Java MapReduce:Mapper和Reducer可以共享变量吗?

Java MapReduce:Mapper和Reducer可以共享变量吗?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我正在使用Java,Hadoop进行MapReduce 输入(txt文件): Mapper读取上述文本文件的每一行并发出(word,1)。但是由于Reducer应该知道每个单词在整个文档中出现的数量。例如,在“apple”的情况下,它出现在doc1、doc2、doc3,因此在Reducer中需要“3” 我想的是这样的: 由于Reducer在所有Mapper的工作完成后开始运行,Mapper可以在每次发出(word,1)时增加HashMap的值。例如,当Mapper读取doc1行时,它将整个内容作

我正在使用
Java
Hadoop
进行
MapReduce

输入(
txt
文件):

Mapper
读取上述文本文件的每一行并发出
(word,1)
。但是由于
Reducer
应该知道每个单词在整个文档中出现的数量。例如,在“apple”的情况下,它出现在doc1、doc2、doc3,因此在
Reducer
中需要“3”

我想的是这样的: 由于
Reducer
在所有
Mapper
的工作完成后开始运行,
Mapper
可以在每次发出
(word,1)
时增加
HashMap
的值。例如,当
Mapper
读取
doc1
行时,它将整个内容作为唯一的单词(=>苹果比萨饼)。每次它发出
(word,1)
,说
(apple,1)
,做
hashMap['apple']+

所有
Mapper
的工作完成后,
Reducer
访问此
HashMap
,以便它可以使用每个单词在整个文档中出现的次数

我读过,但我想从你们那里得到建议


p、 很抱歉我英语不好,但我不是本地人。如果你不明白我在说什么,请发表评论。

我不确定我是否完全明白你在这里做什么

这样做的目的是什么? 如果要计算每个单词在所有记录中出现的次数,它将如下所示:

制图员:

function map(){
  String[] arr = line.split(" ");
  foreach(String word : arr){
    context.write(word,1)
  }
}
映射完成后,所有键都将按键排序,并分组在一起。 这是一个非常重要的特性

例如:

 Mapper:
    doc1 will produce:
    apple 1
    pizza 1
    apple 1
映射后,文档将按键分组: 苹果=>[1,1] 比萨饼=>[1]

减速器:

function reduce(apple, [1,1]){

        count=0;
        foreach(value in values) do:
          count++
        done

        context.write(key,count) ; //Here you will have the number of apples 
    in all your docs 
}
function reduce(apple, [1,1]){

        count=0;
        foreach(value in values) do:
          count++
        done

        context.write(key,count) ; //Here you will have the number of apples 
    in all your docs 
}