我目前正在使用Apache Spark。 但我无法理解地图后如何减少工作..
我的例子很简单
val map = readme.map(line => line.split(" ").size)
我知道这会返回每行的单词数组,但这里的键/值是传递reduce函数的地方..
map.reduce((a,b) => {if(a>b) a else b})
减少阶段如何运作..(a,b)是元组_2?或者它的地图功能键/值?
答案 0 :(得分:0)
一旦你
val map = readme.map(line => line.split(" ").size)
RDD的每个元素由一个数字组成,即文件行中的单词数。
您可以使用map.sum()
或map.reduce( (a,b) => a+b )
计算数据集中的所有字词,这些字词是等效的。
您发布的代码:
map.reduce((a,b) => {if(a>b) a else b})
会找到整个数据集的每行最大字数。
RDD.reduce
方法的工作原理是将它遇到的每两个元素(最初从RDD行对中)转换为另一个元素,在本例中为数字。应该编写聚合函数,以便可以以任何顺序嵌套和调用行。例如,减法不会产生reduce
函数的有用结果,因为您无法提前预测结果将从哪个顺序相互减去。然而,无论顺序如何,增加或最大化仍然可以正常工作。