apache spark agg()函数

时间:2017-04-08 10:34:59

标签: scala apache-spark-sql

对于示例数据框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()是否需要任何varargs作为参数? 需要什么agg()

提前致谢。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

agg的{​​{3}}中,“ ds.agg(...)是ds.groupBy()。agg(...)的简写”。


集合函数avgmaxminsumcount不是可以在DataFrames上调用的方法:

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]

在DataFrame上调用groupBy()返回一个RelationalGroupedDataset,该数据集具有这些聚合函数作为方法(source code的源代码):

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