当前位置:   article > 正文

Spark DataFrame 的 groupBy vs groupByKey_spark dataframe groupby

spark dataframe groupby

在使用 Spark SQL 的过程中,经常会用到 groupBy 这个函数进行一些统计工作。但是会发现除了 groupBy 外,还有一个 groupByKey(**注意RDD 也有一个 groupByKey,而这里的 groupByKey 是 DataFrame 的 **) 。这个 groupByKey 引起了我的好奇,那我们就到源码里面一探究竟吧。

所用 spark 版本:spark 2.1.0

先从使用的角度来说,
**groupBy:**groupBy类似于传统SQL语言中的group by子语句,但比较不同的是groupBy()可以带多个列名,对多个列进行group。比如想根据 “id” 和 “name” 进行 groupBy 的话可以

df.goupBy("id","name")
  • 1

groupBy返回的类型是RelationalGroupedDataset。

**groupByKey:**groupByKey则更加灵活,可以根据用户自己对列的组合来进行groupBy,比如上面的那个例子,根据 “id” 和 “name” 进行 groupBy,使用groupByKey可以这样。

//同前面的goupBy效果是一样的,但返回的类型是不一样的
df..toDF("id","name").goupByKey(row =>{
	row.getString(0) + row.getString(1)
})
  • 1
  • 2
  • 3
  • 4

但和groupBy不同的是groupByKey返回的类型是KeyValueGroupedDataset。

下面来看看这两个方法的实现有何区别。

groupBy
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/975988
推荐阅读
相关标签
  

闽ICP备14008679号