JavaSpark:运行时reduce元素的技术术语?
在下面的字数计算示例中:
(Hello,1)
(Hello,1)
(Hello,1)
(Hello,1)
(Hello,1)
Hadoop的reducer函数将使用键“Hello”收集所有5个元素,然后在reducer函数中进行聚合
然而,在Spark中,它实际上每次减少2个元素。例如,它将第一个和第二个(Hello,1)组合到(Hello,2),将第三个和第四个(Hello,1)组合到(Hello,2)。。。等等(当然,实际情况可能会有不同的顺序)
那么,有没有专门的术语来描述Spark中使用的这种计算方法呢?谢谢
# 1 楼答案
术语与Map Reduce相同。唯一不同的是Map Reduce只提供Map和Reduce函数来实现过滤、连接和聚合等逻辑,而Spark有很多函数。对于map-in-map-reduce,我们在spark中有map、flatMap、filter等;对于map-reduce中的reduce,我们在spark中有reduce、count、reduceByKey、countByKey、aggregateByKey、groupByKey、combineByKey等
在Map Reduce中,若要在映射器端预聚合,则需要指定组合器类;若使用reduceByKey、aggregateByKey、combineByKey,则使用spark组合器。如果不想使用combiner,则必须使用groupByKey函数
对于您所问的主题,map reduce和spark中的技术术语是相同的。但对于分布式缓存这样的主题,它是不同的,在Spark中,它被称为广播。此外,尽管术语相同,但它们的操作方式也存在细微差异
# 2 楼答案
Spark以更具功能性的方式进行编程,因此函数式编程术语应该适用于这里
是一种减少(折叠/累积)功能:
有一些很好的解释here,所以我只是复制粘贴其中的一些:
其中“+”是一个组合器函数:
此外,还有更多关于折叠函数及其在函数编程中的应用的详细信息Fold (higher-order function)
# 3 楼答案
它不一定以这种方式聚合值。您认为MapReduce中的映射器是如何工作的
你可以把它想象成一个hashmap。如果它看到该键已经在hashmap中,它会增加该值,如果没有,它会将该键插入hashmap,然后初始化该值
如果不加1+1,+1,+1,+1,+1,+1的组合,你就不能加1+1+1,除非我忘了数学