gpt4 book ai didi

java - MapReduce分布式 reducer

转载 作者:行者123 更新时间:2023-11-30 07:47:39 25 4
gpt4 key购买 nike

刚开始学习 MapReduce,我有一个文件,其中有一个 Actor 和他演过的电影(每行)。我想创建一个文件如下:

actor     movie1, movie2, ..., movieN

即一个键值文件,但只有 Actor 及其所有电影的一句台词。这没问题。

创建此文件后,我想找到播放最多电影的 Actor 作为第二个 MR - 工作。我读取了新文件(上一个作业的输出)并简单地用数字替换(在 map() 中)电影。在我的 reducer 中,我只需与之前的结果进行比较

if(numberOfRoles.get() < sum){
numberOfRoles.set(sum);
actorWithMostRoles.set(key);
}

其中numberOfRolesactorWithMostRoles是Reducer - Class的属性。

这可以正常工作,没有任何问题。

我的jps输出:

$ jps
32347 Jps
25323 DataNode
25145 NameNode
25541 SecondaryNameNode

我知道可以有多个Mapper和Reducer。例如Reducer_0和Reducer_1将输出播放最多电影的 Actor 。具有以下数据:

actor1 movie1, movie2, movie3
actor2 movie4, movie5

因此Reducer_0将让actor1进行计数,从而输出actor1 3,Reducer_1将输出actor2 2。所以我将有两行而不是一行(actor1) - 因为每个Reducer都找到了actor。

在描述我的行为之后,我有以下问题:

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

最佳答案

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

在此设置中,您将需要另一个映射缩减作业来完成它。

或者,只需使用一个 reducer 即可完成!

关于java - MapReduce分布式 reducer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com