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)

相关推荐
2601_955135035 分钟前
AI音乐生态客服成本2026分析
大数据·人工智能
TDengine (老段)23 分钟前
TDengine 逻辑计划生成 — 从 AST 到关系代数算子树
大数据·数据库·物联网·wpf·时序数据库·tdengine·涛思数据
雪兽软件34 分钟前
大数据分析:定义、重要性和对企业的好处
大数据·大数据分析
A153625537 分钟前
六轴工业机械臂厂家怎么选?评估维度与选型参考
大数据·服务器·人工智能
真上帝的左手39 分钟前
19. 大数据-技术生态
大数据·big data
阿坤带你走近大数据44 分钟前
实时数据开发的一些实战经验
大数据
无忧智库1 小时前
[特殊字符]【万字深度解析】一站式全域数据资产运营平台解决方案——企业数字化转型的数据治理终极答案(PPT)
大数据·人工智能
AI智图坊1 小时前
亚马逊多站点Listing视觉制作的效率瓶颈与AI解决方案:GPT-Image-2与Nano Banana Pro双模型分析
大数据·前端·数据库·人工智能·自动化·aigc
王小王-1231 小时前
基于机器学习的垃圾短信检测研究
大数据·人工智能·机器学习·垃圾短信检测·垃圾短信识别
是一个Bug1 小时前
Agent Skills 是什么?跟 MCP、Workflow、Command、Prompt 有什么关系?
大数据·人工智能·prompt