UDF: 操作单个数据行,产生单个数据行;
UDAF: 操作多个数据行,产生一个数据行。
UDTF: 操作一个数据行,产生多个数据行一个表作为输出。

UDF函数
通过spark.udf.register(“funcName”, func) 来进行注册
使用:select funcName(name) from people 来直接使用

开窗函数

over()开窗函数:
在使用聚合函数后,会将多行变成一行,而开窗函数是将一行变成多行;并且在使用聚合函数后,如果要显示其他的列必须将列加入到group by中,而使用开窗函数后,可以不使用group by,直接将所有信息显示出来。
开窗函数适用于在每一行的最后一列添加聚合函数的结果。
常用开窗函数:
1.为每条数据显示聚合信息.(聚合函数() over())
2.为每条数据提供分组的聚合函数结果(聚合函数() over(partition by 字段) as 别名)
–按照字段分组,分组后进行计算
3.与排名函数一起使用(row number() over(order by 字段) as 别名)

常用分析函数:(最常用的应该是1.2.3 的排序)
1、row_number() over(partition by … order by …)
2、rank() over(partition by … order by …)
3、dense_rank() over(partition by … order by …)
SparkSQL 用户自定义函数(UDF、UDAF、开窗)
4、count() over(partition by … order by …)
5、max() over(partition by … order by …)
6、min() over(partition by … order by …)
7、sum() over(partition by … order by …)
8、avg() over(partition by … order by …)
9、first_value() over(partition by … order by …)
10、last_value() over(partition by … order by …)
11、lag() over(partition by … order by …)
12、lead() over(partition by … order by …)
lag 和lead 可以 获取结果集中,按一定排序所排列的当前行的上下相邻若干offset 的某个行的某个列(不用结果集的自关联);
lag ,lead 分别是向前,向后;
lag 和lead 有三个参数,第一个参数是列名,第二个参数是偏移的offset,第三个参数是 超出记录窗口时的默认值

相关文章:

  • 2021-07-09
  • 2021-11-03
  • 2021-10-19
  • 2021-11-23
  • 2021-11-23
  • 2021-11-03
  • 2021-10-03
  • 2021-11-13
猜你喜欢
  • 2021-09-05
  • 2021-11-24
  • 2021-04-02
  • 2021-12-25
  • 2021-11-03
  • 2021-07-14
  • 2020-02-04
相关资源
相似解决方案