Hadoop Spark中reduce和reduceByKey之间的区别

时间:2017-12-22 01:48:28

标签: hadoop apache-spark

Hadoop Spark中reduce和reduceByKey的功能有什么区别。 为什么reduceByKey是转换,reduce是一个动作。

3 个答案:

答案 0 :(得分:7)

这接近于my answer explaining reduceByKey的副本,但我将详细说明使两者不同的具体部分。但是请参考我的答案,了解reduceByKey内部的更多细节。

基本上,reduce必须将整个数据集拉到一个位置,因为它会减少到一个最终值。另一方面,reduceByKey每个键的一个值。由于此操作可以首先在本地运行,然后它可以保留为RDD并在其数据集上进行进一步的转换。

请注意,您可以使用reduceByKeyLocally自动将地图下拉到单个位置。

答案 1 :(得分:0)

请浏览此官方文档link

reduce是一个动作,它使用函数func聚合数据集的元素(它接受两个参数并返回一个),我们也可以将reduce用于单个RDD(更多信息请点击{{3} })。

reduceByKey当调用(K,V)对的数据集时,返回(K,V)对的数据集,其中使用给定的reduce函数func聚合每个键的值,该函数必须是type(V,V)=> V.(更多信息请点击HERE

答案 2 :(得分:0)

这是qt助手:

  

reduce(f):使用指定的格式减少此RDD的元素   交换和联想二元运算符。目前减少   本地分区。

reduceByKey(func, numPartitions=None, partitionFunc=<function portable_hash>) :

使用关联和可交换的归约合并每个键的值   功能。