释义
根据RDD中的某个属性进行分组,分组后形式为(k, [v1, v2, ...])
方法签名如下:
def groupByKey(): RDD[(K, Iterable[V])] = self.withScope {
...
}
案例
查看每个科目有哪些学生选择
object TestGroupByKey {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setAppName("TestReduceByKey").setMaster("local[1]")
val sc: SparkContext = new SparkContext(conf)
val data = Array(("Science", "Jack"), ("Science", "Tom"), ("Music", "Nancy"), ("Sport", "Tom"), ("Music", "Tony"))
val result: Array[(String, Iterable[String])] = sc.parallelize(data)
.groupByKey()
.collect()
result.foreach(println)
}
}
输出
(Music,CompactBuffer(Nancy, Tony))
(Science,CompactBuffer(Jack, Tom))
(Sport,CompactBuffer(Tom))
解释
- 根据key分组,即根据科目分组,分组后为K-V型RDD,key为科目,value为元素是学生名字的
CompactBuffer
groupByKey
与groupBy
的最大区别就是前者计算后CompactBuffer
的元素没有原始的key,而后者有
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。