在数据分析场景中,典型的计算类型分别是分组、聚合和排序。而 groupByKey、reduceByKey、aggregateByKey 和 sortByKey 这些算子的功能,恰恰就是用来实现分组、聚合和排序的计算逻辑。
这些算子看上去相比其他算子的适用范围更窄,也就是它们只能作用(Apply)在 Paired RDD 之上,所谓 Paired RDD,它指的是元素类型为(Key,Value)键值对的 RDD。
但是在功能方面,可以说,它们承担了数据分析场景中的大部分职责。因此,掌握这些算子的用法,是我们能够游刃有余地开发数据分析应用的重要基础。
先来说说 groupByKey,坦白地说,相比后面的 3 个算子,groupByKey 在我们日常开发中的“出镜率”并不高。之所以要先介绍它,主要是为后续的 reduceByKey 和 aggregateByKey 这两个重要算子做铺垫。
groupByKey:分组收集
groupByKey 的字面意思是“按照 Key 做分组”,但实际上,groupByKey 算子包含两步,即分组和收集。
具体来说,对于元素类型为(Key,Value)键值对的 Paired RDD,groupByKey 的功能就是对 Key 值相同的元素做分组