窗口参数

class WindowSpec private[sql](
partitionSpec: Seq[Expression],
orderSpec: Seq[SortOrder],
frame: WindowFrame)

1、Aggregate Functions: 聚合函数,比如:sum(...)、 max(...)、min(...)、avg(...)等.

对于窗口要求无所限制,但窗口参数具备相应的默认值:

partitionSpec 默认是 SinglePartition(单个分区)

orderSpec 默认不排序

frame

  • 当窗口缺少 orderSpec 时,默认 specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())
  • 当窗口具备 orderSpec 时,默认 specifiedwindowframe(RangeFrame, unboundedpreceding$(), currentrow$())

2、Sort Functions: 排序函数 , 比如:rank()、row_number()、dense_rank() 等.

要求运行的窗口必须具备 orderSpec

并且 frame必须是 specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())

frame 可以不指定,让程序默认生成

partitionSpec 默认是 SinglePartition

3、Analytics Functions: 统计和分析函数,比如:lead(...)、lag(...) 等.

要求运行的窗口必须具备 orderSpec

frame要求使用 RowFrame

precedingfollowing 会根据 函数的offset参数 动态变化,

例如:

lead($"id", offset = 1) over spec.orderBy("id")
// specifiedwindowframe(RowFrame, 1, 1) lead($"id", offset = 3) over spec.orderBy("id")
// specifiedwindowframe(RowFrame, 3, 3) lag($"id", offset = 2) over spec.orderBy("id")
// specifiedwindowframe(RowFrame, -2, -2) lag($"id", offset = 4) over spec.orderBy("id")
// specifiedwindowframe(RowFrame, -4, -4)

frame 可以不指定,让程序默认生成

partitionSpec 默认是 SinglePartition

不难看出,lead 和 lag 函数就是通过 frame 限制窗口的大小和位置来实现的

spark中各窗口函数对于窗口的要求的更多相关文章

  1. Spark sql -- Spark sql中的窗口函数和对应的api

    一.窗口函数种类 ranking 排名类 analytic 分析类 aggregate 聚合类 Function Type SQL DataFrame API Description  Ranking ...

  2. 「数据分析」Sqlserver中的窗口函数的精彩应用之数据差距与数据岛(含答案)

    上一篇介绍过数据差距与数据岛的背景,这里不再赘述,请翻阅上一文.此篇在Sqlserver上给大家演示1000万条记录的计算性能. 测试电脑软硬件说明 一般般的笔记本电脑,2017年7月,价格:4500 ...

  3. Spark中的RDD和DataFrame

    什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格. RDD和DataFrame的区别 DataFrame与RDD的主要区别在 ...

  4. Spark中的两种模式

    两种模式 client-了解 cluster模式-开发使用 操作 1.需要Yarn集群 2.历史服务器 3.提交任务的的客户端工具-spark-submit命令 4.待提交的spark任务/程序的字节 ...

  5. 微软外服札记④——Spark中的那些坑...

    Spark中的那些坑 Spark中的那些坑 前言 读取配置文件 时区陷阱 怪异的DayOfWeek substring陷阱 IP地址解析 枚举的数值 posexplode函数 为什么我的程序运行那么慢 ...

  6. Spark中常用工具类Utils的简明介绍

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  7. Swift-打开其它Storyboard中的自定义模态窗口

    本文的方法针对OS X应用开发. 如果想在某个ViewController中,用模态窗口的方式,打开某个Storyboard中定义的WindowController.可用以下方式. let story ...

  8. SPARK 中 DriverMemory和ExecutorMemory

    spark中,不论spark-shell还是spark-submit,都可以设置memory大小,但是有的同学会发现有两个memory可以设置.分别是driver memory 和executor m ...

  9. Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  10. Scala 深入浅出实战经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

随机推荐

  1. 2019-8-31-dotnet-线程静态字段

    title author date CreateTime categories dotnet 线程静态字段 lindexi 2019-08-31 16:55:58 +0800 2019-06-13 0 ...

  2. Django之路由层、视图层、模板层介绍

    一.Django请求生命周期 1.路由层urls.py Django 1.11版本 URLConf官方文档 1.1 urls.py配置基本格式 from django.conf.urls import ...

  3. Angular cli 组件和服务的创建, 父传子,子传父,服务的简单使用

    1:Angular cli 创建组件component ng g component components\right ng g c wave 简写 需要定位到根路径下即可创建组件 Could not ...

  4. 解锁HDC 2024之旅:从购票到报名,全程攻略

    本文分享自华为云社区<解锁HDC 2024之旅:从购票到报名,全程攻略>,作者:华为云社区精选. Hi,代码界的小伙伴们,集结号已经吹响了!华为开发者大会(HDC 2024)--这场汇聚了 ...

  5. 2021年5.21NCU第四届校赛

    比赛地址:http://222.204.50.106/contest/39 A 树上祖先 链接:http://222.204.50.106/contest/39/problem/A B 莎士比亚 链接 ...

  6. ZJC比赛

    \(\large{Uptatete}\) 先放张图 这次是真的没想再改了,但是一到教室就又会怎么优化了 没必要每个点都让它和其他所有点判断一下,可以从上一个点加加减减啥的转过来 然后我就在昨天那个 \ ...

  7. WEB服务与NGINX(16)-网站logo之favicon.ico文件

    目录 1. 网站logo之favicon.ico文件 1.1 favicon.ico文件的作用 1.2 favicon.ico文件带来的问题 1. 网站logo之favicon.ico文件 1.1 f ...

  8. C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理

    C++ 资源列表,内容包括: 标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等 目录 进程间通信 Json 日志 机器学习 数学 内存分配 多媒体 网络 PDF 物理学 ...

  9. 热烈祝贺 Splashtop 荣获“最佳远程办公解决方案”奖

    ​ 2021年2月,第十四届加拿大年度"经销商选择奖"落下帷幕.Splashtop在此次评选中荣获"最佳远程办公解决方案"奖,获得该奖项的还有微软和谷歌. 一直 ...

  10. Lua热更学习--使用toLua中的协程

    [6] C#访问调table类中的成员变量和函数 访问table中的变量和函数 lua中可以使用table作为class,因此对table中的函数访问调用是必要的根据前面对table访问和functi ...