您的位置:首页 > 其它

Spark中groupBy groupByKey reduceByKey的区别

2018-01-26 17:52 591 查看
groupBy
和SQL中groupby一样,只是后面必须结合聚合函数使用才可以。

例如:

hour.filter($"version".isin(version: _*)).groupBy($"version").agg(countDistinct($"id"), count($"id")).show()

groupByKey
对Key-Value形式的RDD的操作。

例如(取自link):

val a = sc.parallelize(List("dog", "tiger", "lion", "cat", "spider", "eagle"), 2)
val b = a.keyBy(_.length)//给value加上key,key为对应string的长度
b.groupByKey.collect
//结果 Array((4,ArrayBuffer(lion)), (6,ArrayBuffer(spider)), (3,ArrayBuffer(dog, cat)), (5,ArrayBuffer(tiger, eagle)))

reduceByKey
与groupByKey功能一样,只是实现不一样。本函数会先在每个分区聚合然后再进行总的统计,如图:



而groupByKey则是



因此,本函数比groupByKey节省了传播的开销,尽量少用groupByKey

参考

https://www.iteblog.com/archives/1357.html

http://blog.csdn.net/guotong1988/article/details/50556871

http://blog.cheyo.net/178.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐