groupByKey是对具有相同键的值进行分组,reduceByKey是合并具有相同键的值。
groupByKey合并之后会产生一个Iterable,reduceByKey不会。
数据量大的时候一般建议用reduceByKey,因为reduceByKey会在shuffling之前就聚合数据,而groupByKey是在之后。
combineByKey需要定义三个方法,第一组合,第二合并值,第三合并组合器,看起来比较适合复杂的计算。
自己写的实践代码:
1 | package com.practice_spark |