对于示例数据框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()
?
提前致谢。
答案 0 :(得分:5)
为了编写.sum
,必须存在此方法。它是在API上硬编码的。使用.agg
您可以提供其他聚合函数,sum("column")
只是其中之一。
答案 1 :(得分:0)
在agg
的{{3}}中,“ ds.agg(...)是ds.groupBy()。agg(...)的简写”。
集合函数avg
,max
,min
,sum
和count
不是可以在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]