我想在
ruby中模拟我的地图实现并减少像hadoop这样的系统的功能,以验证这个想法至少是有效的.
我有以下问题.我有两个元素列表:
List1 3 - A 4 - B 5 - C 7 - D 8 - F List2 2 - A 8 - B 6 - C 9 - D 4 - E
我需要构建一个通用列表,其中包含与两个列表中常见字母相关联的数字的总和:
commonList 5 - A 12 - B 11 - C 16 - D
我想用map创建一个ruby脚本并减少操作来解决这个问题.我不确定如何解决这个问题或者在ruby脚本中用什么程序来模拟这个问题.
任何帮助赞赏.
解决方法
您可以尝试考虑
MapReduce维基百科文章中给出的元素:
>输入阅读器 – 在您的情况下,这可能是对输入哈希值的[key,value]对的方法调用.
>一个Map函数 – 你已经有了应该处理数据的键,所以你的map worker只返回它作为输入的[key,value]对
>分区函数 – 一种基于密钥分配reduce worker的方法.在你的情况下,它可能只是key.hash%REDUCER_COUNT.
>比较函数 – 我不认为这适用于您的情况,因为您不需要以任何特定顺序处理值.
> a Reduce函数 – 将被赋予[key,list]对,list是与该键相关联的值列表.如果列表长度超过一个元素,它将返回列表的总和(因为您只需要处理两个输入哈希值中出现的元素).
>输出编写器 – 在你的例子中可能是简单的哈希.
而here’s我(以上)简化了以上的实现.