从Spark 1.5.x开始,Spark SQL提供了大量的内置函数。使用时只需导入org.apache.spark.sql.functions即可。Spark SQL内置函数包括聚合函数、集合函数、日期时间函数、数学函数、窗口函数、字符串函数、其他函数等各类函数。比如,在处理业务数据时,我们通常离不开agg聚合函数,使用count、sum、avg、max、min等操作,需要对数据的某些列进行分组,基于这些操作我们可以完成例如时间范围内商品销量统计、实时性气象指标统计甚至更为复杂的数据分析。在DataFrame的API中有许多重载的agg函数,下面是Spark 1.6.0下DataFrame类中agg函数的定义:
def agg(expr:Column,exprs:Column∗):DataFrame=groupBy().agg(expr,exprs:_∗)
通过这段定义大致可以看出DataFrame的agg方法都需要先执行调用groupBy方法:
groupBy函数的返回值为GroupedData,然后转过来再调用GroupedData类中的agg方法:
在org.apache.spark.sql.functions包下提供了大量的内置函数供开发者使用,总体上可以包含如下类型:
1)聚合函数,例如countDistinct、sumDistinct等。
2)集合函数,例如sort_array、explode等。(www.xing528.com)
3)日期时间函数,例如hour、quarter、next_day等。
4)数学函数,例如asin、atan、sqrt、tan、round等。
5)窗口函数,例如row_number、rank等。
6)字符串函数,例如concat、format_number、regexp_extract等。
7)其他函数,例如isNan、sha1、randn、callUDF等。
表5-1列出了内置函数中最为常见的agg聚合函数,其他函数可以查阅源代码org.apache.spark.sql.functions。
表5-1 内置函数中最为常见的聚合函数
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。