gpt4 book ai didi

python - 将两个 MapReduce 作业的结果连接在一起

转载 作者:可可西里 更新时间:2023-11-01 15:49:02 27 4
gpt4 key购买 nike

我正在尝试加入我从两个 MapReduce 作业中获得的结果。第一项工作返回 5 篇最有影响力的论文。下面是第一个 reducer 的代码。

import sys
import operator

current_word = None
current_count = 0
word = None
topFive = {}
# input comes from stdin
for line in sys.stdin:
line = line.strip()

# parse the input we got from mapper.py
word, check = line.split('\t')
if check != None:
count = 1

if current_word == word:
current_count += count
else:
if current_word:
topFive.update({current_word: current_count})
#print(current_word, current_count)
current_count = count
current_word = word
if current_word == word:

print(current_word, current_count)

t = sorted(topFive.iteritems(), key=lambda x:-x[1])[:6]
print("Top five most cited papers")
count = 1
for x in t:
if x[0] != 'nan' and count <= 5:
print("{0}: {1}".format(*x))
count = count + 1

第二个工作找到5个最有影响力的作者,代码和上面的代码差不多。我想获取这两项工作的结果并加入它们,以便我可以为每位作者确定他们 3 篇最有影响力的论文的平均引用次数。我不知道该怎么做,看来我需要以某种方式加入结果?

最佳答案

到目前为止,您将得到两个输出目录,一个用于作者,一个用于论文。

现在您要对这两个文件执行 JOIN 操作(如 DB 术语)。为此,MapReduce 方法是使用两个输出文件执行此操作的第三个作业。

Hadoop 中的 JOIN 操作得到了很好的研究。一种方法是使用 reducer 端连接模式。该模式包括映射器创建两个子键的复合键(一个是原始键 + 一个指定是表 0 还是 1 的 bool 键)。

在使用 reducer 之前,您需要创建一个分区器来分隔这些复合键。 reducers 将从每个表中获取所有相同的键。

如果您需要进一步说明,请告诉我,我写这篇文章的速度非常快。

关于python - 将两个 MapReduce 作业的结果连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52934217/

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