Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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分布式减速器_Java_Mapreduce_Distributed_Counting_Mapper - Fatal编程技术网

Java MapReduce分布式减速器

Java MapReduce分布式减速器,java,mapreduce,distributed,counting,mapper,Java,Mapreduce,Distributed,Counting,Mapper,刚开始学习MapReduce,我有一个文件,里面有一个演员和他演的一部电影(每行)。我想创建一个文件,如下所示: actor movie1, movie2, ..., movieN i、 一个键值文件,但只有一行演员和他所有电影的外观。这没问题 在我创建了这个文件之后,我想找到演过大多数电影的演员作为第二个MR-Job。我读取我的新文件(前一个作业的输出),然后简单地用编号替换(在map())电影。在我的减速机中,我只需与之前的结果进行比较 if(numberOfRoles.get()

刚开始学习MapReduce,我有一个文件,里面有一个演员和他演的一部电影(每行)。我想创建一个文件,如下所示:

actor     movie1, movie2, ..., movieN
i、 一个键值文件,但只有一行演员和他所有电影的外观。这没问题

在我创建了这个文件之后,我想找到演过大多数电影的演员作为第二个MR-Job。我读取我的新文件(前一个作业的输出),然后简单地用编号替换(在
map()
)电影。在我的减速机中,我只需与之前的结果进行比较

if(numberOfRoles.get() < sum){
        numberOfRoles.set(sum);
        actorWithMostRoles.set(key);
}
我知道可以有多个映射器和还原器。例如,Reducer_0和Reducer_1将输出播放电影最多的演员。具有下列数据:

演员1电影1、电影2、电影3
演员2电影4,电影5

因此,Reducer\u 0将使actor1计数,从而输出actor13,Reducer\u 1将输出actor22。所以我将有两行而不是一行(actor1)——因为每个Reducer都找到了actor

在我描述了我的做法之后,我有以下问题:


要么我不了解它是如何工作的(在集群中使用多个减速器),要么我必须以某种方式进行同步?

是的,您了解它是如何工作的

在此设置中,您需要另一个map reduce作业来完成它


或者,只需使用一个减速器就可以了

在第二个MR作业中读取新文件(前一个作业的输出)
把你的先生换成下面这样

映射阶段:
读取每个演员和他们的电影计数,并用一个特殊的键“max”和演员名称和他们的电影计数的值对输出,如下所示

output key = "max"  
output value = ("actor", movieCount)
还原阶段:
您将在单个减速机中获得所有演员及其电影计数作为值列表,因此只需从值列表中找到最大电影计数

input key = "max"   
input value = [("actor",movie_count), ("actor",movie_count) ...]   
output key = "most movies played"      
output value = max_value
input key = "max"   
input value = [("actor",movie_count), ("actor",movie_count) ...]   
output key = "most movies played"      
output value = max_value