在 Erlang 中实现 MapReduce 框架
Posted
技术标签:
【中文标题】在 Erlang 中实现 MapReduce 框架【英文标题】:Implementing a MapReduce skeleton in Erlang 【发布时间】:2022-01-22 02:18:59 【问题描述】:我对并行编程和 Erlang 语言都很陌生,而且我有点挣扎。
我很难实现 mapreduce 框架。我生成了 M 个映射器(它们的任务是将幂函数映射到浮点数列表中)和 R 个化简器(它们对映射器发送的输入列表的元素求和)。
然后我想要做的是将每个映射器的中间结果发送到一个随机减速器,我该如何将一个映射器链接到一个减速器? 我已经在互联网上查看了示例。我能找到的最接近我想做的事情是this word counter example,作者似乎找到了一种将映射器链接到reducer的聪明方法,并且逻辑是有道理的,但是我无法对其进行调整为了满足我的特殊需要。也许键值实现不适合求幂列表的总和?
有什么帮助吗?
【问题讨论】:
【参考方案1】:好的,我已经设法更改单词计数器示例的代码来计算幂列表的总和。
其实很简单。 (还有一些我之前尝试过的东西,但一开始并没有用。也许有一个我没有注意到的错误,但是哦。)
问题确实存在于用户定义的映射函数以及它生成键值对的方式中:对于每一对,键总是应该是同一个原子,而值只是应用到的正弦函数当前号码。
这是我必须对上面链接的代码进行的唯一修改:
M_func = fun(List) ->
lists:map( fun(X) ->
atom, X*X
end, List)
end,
【讨论】:
以上是关于在 Erlang 中实现 MapReduce 框架的主要内容,如果未能解决你的问题,请参考以下文章