Hadoop Spark中reduce和reduceByKey的功能有什么区别。 为什么reduceByKey是转换,reduce是一个动作。
答案 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>) :
使用关联和可交换的归约合并每个键的值 功能。