解决map reduce问题

Fle*_*seo 8 ruby mapreduce

我想在ruby中模拟像hadoop这样的系统的函数mapreduce函数的实现,以验证这个想法是否至少有效.

我有以下问题.我有两个元素列表:

List1
3 - A
4 - B
5 - C
7 - D
8 - F

List2
2 - A
8 - B
6 - C
9 - D
4 - E
Run Code Online (Sandbox Code Playgroud)

我需要构建一个通用列表,其中包含与两个列表中常见字母相关联的数字总和:

commonList
5 - A
12 - B
11 - C
16 - D
Run Code Online (Sandbox Code Playgroud)

我想用mapreduce操作来制作一个ruby脚本来解决这个问题.我不确定如何解决这个问题或在ruby脚本中用什么程序来模拟这个问题.

任何帮助赞赏.

Mla*_*vić 2

您可以尝试考虑MapReduce维基百科文章中给出的元素:

  • 输入读取器 - 在您的情况下,这可能是[key, value]来自您的输入哈希的方法调用。
  • 一个 Map 函数 - 你已经有了你应该用来处理数据的键,所以你的map工作人员只会返回[key, value]它作为输入获得的对
  • 分区函数 - 一种根据键分配归约工作者的方法。就你而言,这可能很简单key.hash % REDUCER_COUNT
  • 比较函数 - 我认为这不适用于您的情况,因为您不需要以任何特定顺序处理值。
  • 一个Reduce函数-将给出[key, list]对,列表是与键关联的值的列表。list如果列表长度超过一个元素,它将返回总和(因为您只希望处理两个输入哈希中出现的元素)。
  • 输出编写器 - 在您的示例中可以是普通的哈希。

我对上述内容的(过度)简化实现。