apache spark agg( ) function



对于示例数据帧scholor

scala> scholor.show
| id|  name|age|sal|base|

对于上面,下面的两个都给出了相同的输出。那么 agg() 有什么用。它只是为了名字。

scala> scholor.groupBy("age").sum("base").show      /*with out agg */
scala> scholor.groupBy("age").agg(sum("base")).show        /* with agg */
+---+---------+
|age|sum(base)|
+---+---------+

agg()需要任何变量作为参数吗?agg()需要什么?

提前谢谢。

为了写.sum这个方法必须存在。它在 API 上硬编码。使用.agg可以提供其他聚合函数,sum("column")只是其中之一。

来自agg的源代码,"ds.agg(...)是 ds.groupBy().agg(...)"的简写。


聚合函数avgmaxminsumcount不是可以在数据帧上调用的方法:

scala> my_df.min("column")
<console> error: value min is not a member of org.apache.spark.sql.DataFrame

agg是一个 DataFrame 方法,它接受这些聚合函数作为参数:

scala> my_df.agg(min("column"))
res0: org.apache.spark.sql.DataFrame = [min(column): double]

在数据帧上调用groupBy()会返回一个 RelationalGroupedDataset,该数据集将这些聚合函数作为方法(groupBy的源代码):

scala> my_df.groupBy().min("column")
res1: org.apache.spark.sql.DataFrame = [min(column): double]

相关内容

  • 没有找到相关文章

最新更新