从边缘列表

时间:2017-11-29 03:26:38

标签: dictionary mapreduce key

我需要一些帮助从边缘列表在Python中创建Map Reduce函数。

给出以下列表:

A,B
A,C
A,D
B,C
C,A
C,B
D,A

我的代码应遵循以下格式。我的目标是显示学位列表以及学位数。

map(key, value):
//key: document name; value: text of the document
    for each word w in value:
        emit(w, 1)

reduce(key, values):
//key: a word; value: an iterator over counts
    result = 0
    for each count v in values:
        result += v
        emit(key, result)

循环对我来说一直都很困难。有人能指出我正确的方向吗?

输出应如下:

Degree     Count
1           2
2           1
3           1

代码应适用于任何类似格式的数据集

所以,据我所知,我需要计算每个字母配对的不同值的数量 - 这将是" degree" (例如,A是3级),然后根据程度对总数进行计算 - 这将是"计数"。

密钥可以是这对值吗?

map(key, value):
//key: document name; value: text of the document
    for each word w in value:
        emit([x,y], 1)

1 个答案:

答案 0 :(得分:1)

我不确定MapReduce是否是解决此问题的最佳方法,但我认为以下内容是有道理的。

首先将每个Vertex-Edge对映射到(Vertex,1)。然后通过对每个顶点的计数求和来减少。

map(key, value):
//key: vertex; value: edge
    emit(key, 1)

reduce(key, values):
//key: vertex; value: an iterator over counts
    result = 0
    for each count v in values:
        result += v
        emit(key, result)

这假设输入行是唯一的。