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)

相关推荐
SelectDB2 分钟前
2026 年 Apache Doris 和 StarRocks 怎么选?一篇更接近真实选型的对比
大数据·数据库·数据分析
ZhiMuZhiLing9 分钟前
企业获客软件免安装能力横评:网页端和小程序端实测数据
大数据·小程序·流量运营·用户运营
肠畔码农29 分钟前
深入分布式事务内核:从 2PC/XA 到 Seata AT 模式的架构演进与权衡
分布式·架构
智圣新创0137 分钟前
存量数字化校园效能升级:智圣新创数据治理及一表通平台实现填报减负与数据价值双升
大数据·人工智能·物联网
ai小陈1 小时前
PyTorch多GPU分布式训练实战:从单卡脚本迁移到DDP
服务器·人工智能·pytorch·分布式·深度学习·ai·gpu算力
sdzhyt1 小时前
从劳动仲裁看智能体如何真正走进政务一线?
大数据·人工智能
Hive_MOM1 小时前
制造企业出货检验(OQC)与交付管理数字化:把好出厂的最后一道关
大数据·人工智能·制造
Michael阿明1 小时前
Strip Plot vs Swarm Plot:看清每一个数据点
大数据·数据绘图
yyxx4121231 小时前
钉钉专属版一年多少钱?2026最新价格
大数据·人工智能·物联网
Kari112 小时前
AgentOps 七大闭环 vs 传统 Agent 开发:腾讯云 ADP CSP 授权服务商 JOTO 解析生产级落地的本质差异
大数据·人工智能·腾讯云