SparkSQL常用聚合函数

This commit is contained in:
罗祥 2019-06-04 17:46:59 +08:00
parent ef71c9d5f8
commit 190c72d91d

View File

@ -36,7 +36,7 @@ empDF.createOrReplaceTempView("emp")
empDF.show()
```
> 注emp.json可以在本仓库的resources目录进行下载。
> 注emp.json可以从本仓库的[resources](https://github.com/heibaiying/BigData-Notes/tree/master/resources)目录下载。
### 1.2 count
@ -173,8 +173,8 @@ spark.sql("SELECT deptno, count(ename) ,sum(sal) FROM emp GROUP BY deptno").show
Scala提供了两种自定义聚合函数的方法分别如下
- 有类型的自定义聚合函数主要适用于DataSets
- 无类型的自定义聚合函数主要适用于DataFrames
- 有类型的自定义聚合函数主要适用于DataSet
- 无类型的自定义聚合函数主要适用于DataFrame。
以下分别使用两种方式来自定义一个求平均值的聚合函数,这里以计算员工平均工资为例。两种自定义方式分别如下:
@ -252,8 +252,8 @@ object SparkSqlApp {
关于`zero`,`reduce`,`merge`,`finish`方法的作用在上图都有说明,这里解释一下中间类型和输出类型的编码转换,这个写法比较固定,基本上就是两种情况:
- 自定义类型case class或者元组就使用`Encoders.product`方法;
- 基本类型就使用其对应名称的方法,如`scalaByte ``scalaFloat``scalaShort`
- 自定义类型Case Class或者元组就使用`Encoders.product`方法;
- 基本类型就使用其对应名称的方法,如`scalaByte ``scalaFloat``scalaShort`,示例如下:
```scala
override def bufferEncoder: Encoder[SumAndCount] = Encoders.product