|
|
1
29
假设你有一个数字列表,123456。 这里的关联意味着您可以将操作应用于任何子组,然后将其应用于这些子组的结果,并得到相同的答案:
将括号视为组合器的执行。 交换意味着顺序不重要,所以:
例如,如前所示,加法适合此属性。“max”也适用于上述属性,因为max的max是max.max(a,b)=max(b,a)。 中位数是一个不起作用的例子:中位数的中位数不是真正的中位数。
|
|
|
2
10
对于交换性,假设你的减速机可以用一个称为f()的函数(用数学术语)来表示。如果f(a,b)=f(b,a),那么你的减速机是可交换的
对于结合性,其性质是f(f(a,b),c)=f(a,f(b,c))。例如:
因此,在Map/Reduce的上下文中,您的reducer必须尊重这两个属性。例如,如果减速器只执行sum()或max(),则它同时考虑这两个属性,但mean()或median()之类的属性则不考虑这两个属性,因此不能将其用作组合器。 我个人认为合并器是在映射阶段之后在内存中运行的小型还原器,是减少网络流量的优化,如果您以这种方式看到映射/还原,那么交换性/关联性实际上是有意义的:
|