Spark窗口函数

1、 Spark中的窗口函数

窗口就是单纯在行后面加一个列

可以套多个窗口函数,但彼此之间不能相互引用,是独立的

窗口函数会产生shuffle

over就是用来划分窗口的

(1) 分组聚合里面的函数,基本都可以用于窗口函数

count 、 avg 、 max 、 min

DENSE_RANK : 连续排序 11122333

RANK : 跳跃排名 11144666

(2) 窗口函数 排序和不排序的区别 :

不排序 -- 全局结果,同一个组内每一条数据后面的值都一样

排序 -- 累计, 第三条数据是第一条和第二条数据的和

(3) 凡是通过自己和自己关联的, 都是可以通过窗口实现的

sum(case when round(r/2)=zhongweishu then sco else 0 end) -- 下标等于中位数返回true,做sum(sco)求和 , 否则不求和

2、 Spark -- DF与RDD之间的相互转换

创建好 SparkSession 之后可以直接获取 SparkContext

DF比RDD多了列名和列类型

(1) RDD 转换成 DF -- studentRDD.toDF

需要注意字段的数量和顺序、 需要导入隐式转换

(2) DF 转换成 RDD -- studentDF.rdd

3、 Spark 自定义函数

所有可以写sql的框架都可以自定义函数

两种情况 : 用在DSL、 用在sql

(1) 定义自定义函数

val ageAdd: UserDefinedFunction = udf((age: Int) => {

age + 1

})

(2) DSL 可以直接调用 自定义函数

(3) 需要自定义函数, 并注册 才能在sql中使用

// 注册自定义函数

spark.udf.register("ageAdd", ageAdd)

相关推荐
Hui_AI7206 小时前
抖店铺货自动化:7个核心功能的技术实现方案
大数据·运维·人工智能·自动化·产品运营·ai写作·内容运营
敖正炀6 小时前
云原生持续交付:GitOps 与渐进式发布
分布式·架构
liana87446 小时前
统一企业门户,告别多系统碎片化办公
大数据·安全
前端若水6 小时前
版本控制:智能体提示与配置的CI/CD
大数据·elasticsearch·ci/cd
AI_yangxi6 小时前
短视频矩阵系统哪家好点
大数据·人工智能·矩阵
天天爱吃肉82186 小时前
新能源汽车单级车载电源及高频高密度DCDC设计开发技术入门指南
大数据·人工智能·功能测试·嵌入式硬件·汽车
枫叶林FYL6 小时前
【机器学习与智慧医疗】2型糖尿病早期预警系统:当多参数集成模型学会“会诊“
大数据·人工智能
Data_Journal7 小时前
什么是数据采购,它究竟如何运作?
大数据·开发语言·数据库·人工智能·python
weixin_553654487 小时前
如何看待 2026 年 Google I/O 大会发布的 Gemini Spark?
大数据·人工智能·分布式·spark
pingao1413787 小时前
供水排水燃气电力通信智慧井盖传感器_智慧市政管网监测设备
大数据·人工智能·物联网