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)

相关推荐
灯澜忆梦13 小时前
【RabbitMQ #11】 | 消费者可靠性
分布式·rabbitmq·ruby
陈工大模型13 小时前
2026年GEO工具选型指南:搜极星GEO如何破解企业AI搜索优化困局?
大数据·人工智能
智兆APS13 小时前
缝制制造APS转型总纲:分层跃迁行动手册、选型评估与长期进化范式
大数据·人工智能·服装行业aps·包箱行业aps
小蒋观天下13 小时前
两轮车检测AI摄像头行业竞争格局与企业突围路径解析
大数据·人工智能·安全·计算机视觉·ai大模型
白露与泡影13 小时前
Jev 爆火之后,给企业应用配一个 AI 决策模型
大数据·人工智能·深度学习
zhongerzixunshi13 小时前
DLMM 企业数字化转型的“度量衡”与导航仪
大数据·人工智能
智塑未来13 小时前
通过GMP认证的制药MES系统推荐:审计追踪与电子签名能力对比
大数据·人工智能
灯澜忆梦14 小时前
【RabbitMQ #9】 | 生产者可靠性
分布式·rabbitmq
众壹能源科技15 小时前
RS485 总线部署中,终端电阻与拓扑为什么重要
大数据
银河技术16 小时前
TB级文本去重实战:从单机 OOM 到 Spark / Ray 分布式架构的工程演进
分布式·微服务·重构·架构·spark·llm·rag