Spark算子reduce reduceByKey groupBykey的区别
自己在用reduce reduceByKey groupBykey时一定要懂这几个的区别
reduce是指第一次传入前两个变量到函数,计算的结果作为参数1与后面的变量又继续依次计算,以后每次都将前一次的计算结果和后一次取出来的值送入函数迭代计算
直到输出一个最终值的结果
reduceByKey 则是对具有相同key进行上述reduce操作,只不过在key汇聚之前就会对相同key的value做预聚合计算,相当于在相同key聚合之前
就会对相同key先完成一次小规模计算,最终再对各分区的key聚合后计算
groupBykey 形式上与reduceBykey是一样的效果 但内部实现不一样,groupByKey没有提前预聚合,对于大规模数据集用reduceByKey会好一点
所以说groupBykey相当于移动了所有的kv对,这对于大规模数据集而言,效率会比reduceByKey差很多
其实groupByKey和reduceByKey底层都是调用combineBykey算子,理解combineBeKey就会理解这两个差别

浙公网安备 33010602011771号