4.3.2 数据分组
对于有键的数据,一个常见的用例是将数据根据键进行分组。
groupByKey()
如果数据已经以预期的方式提取了键, groupByKey() 就会使用 RDD 中的键来对数据进行分组。
对于一个由类型 K 的键和类型 V 的值组成的 RDD,所得到的结果 RDD 类型会是 [K, Iterable[V]] 。
groupBy()
- 用于未成对的数据上
- 根据除键相同以外的条件进行分组
- 接收一个函数,对源 RDD 中的每个元素使用该函数,将返回结果作为键再进行分组。
cogroup()
cogroup() 函数对多个共享同一个键的 RDD 进行分组。
对两个键的类型均为 K 而值的类型分别为 V 和 W 的 RDD 进行 cogroup() 时,得到的结果 RDD 类型为 [(K, (Iterable[V], Iterable[W]))] 。
如果其中的一个 RDD 对于另一个 RDD 中存在的某个键没有对应的记录,那么对应的迭代器则为空。