Spark SQL 窗口函数必知必会

栏目: 编程工具 · 发布时间: 5年前

内容简介:1  开胃菜,spark sql 窗口函数的基本概念和使用姿势2  spark sql 中窗口函数深入理解3  不是UDF,也不是UDAF,教你自定义一个窗口函数(UDWF)

spark君说:

昨天在公众号圈子里面发生了一件大事,就是咪蒙的公众号被注销了,有个比较出名的词叫含咪率,就是关注咪蒙公众号的微信好友数目/总微信好友数,通过这个词就可见咪蒙有多火了。

我以前个人在朋友圈中点开过咪蒙写的文章,作为一个逻辑感比较强的程序员,被其偷换概念和带节奏的手法恶心到了。这里之所以提这个事情,就是我观察到一个现象就是,咪蒙之所以那么火的原因就是擅长贩卖情感焦虑,这种手法很能带节奏,很有传播效果,还有一些大v比较擅长贩卖知识焦虑,前端时间还有人把逻辑思维卖课比作针对年轻人的权健,说的也是这个事情。

spark君想表达,焦虑真的有用么?有个毛用,焦虑本身没有任何作用,在资本寒冬下找工作,能真正帮助到你的是你平时的积累,有些同学天天不是关心这里裁员了,就是关心那里冻结招聘,担心这个,担心那个,然后买一堆课程,加了一堆付费的知识星球,然后就没有然后了,这样活该被圈钱,免费的知识多着呢,spark君提供的都是免费的优质的内容,重要的是你能静下心来真正学进去,才能立于不败之地,spark君也反思了一下之前的一些推文,有些也制造了一些焦虑,这样的文章以后spark君尽量少发,除非能提供一定的有价值的信息。

最近理了下spark sql 中窗口函数的知识,打算开几篇文章讲讲,窗口函数有很多应用场景,比如说炒股的时候有个5日移动均线,或者让你对一个公司所有销售所有部门按照销售业绩进行排名等等,都是要用到窗口函数,在spark sql中,窗口函数和聚合函数的区别,之前文章中也提到过,就是聚合函数是按照你聚合的维度,每个分组中算出来一个聚合值,而窗口函数是对每一行,都根据当前窗口(5日均线就 是今日往前的5天组成的窗口),都聚合出一个值。

1  开胃菜,spark sql 窗口函数的基本概念和使用姿势

2  spark sql 中窗口函数深入理解

3  不是UDF,也不是UDAF,教你自定义一个窗口函数(UDWF)

4  从 spark sql 源码层面理解窗口函数

正文:

什么是简单移动平均值

简单移动平均(英语:Simple Moving Average,SMA)是某变数之前n个数值的未作加权算术平均。例如,收市价的10日简单移动平均指之前10日收市价的平均数。

直接看例子吧:

Spark SQL 窗口函数必知必会

这个 window spec 中,数据根据用户(customer)来分去。每一个用户数据根据时间排序。然后,窗口定义从 -1(前一行)到 1(后一行) ,每一个滑动的窗口总用有3行

Spark SQL 窗口函数必知必会

这段代码添加了一个新列,movingAvg,在滑动的窗口中使用了均值函数:

Spark SQL 窗口函数必知必会

窗口函数和窗口特征定义

正如上述例子中,窗口函数主要包含两个部分:

指定窗口特征(wSpec):

  1. “partitionyBY” 定义数据如何分组;在上面的例子中,是用户 site

  2. “orderBy” 定义分组中的排序

  3. “rowsBetween” 定义窗口的大小

指定窗口函数函数:

指定窗口函数函数,你可以使用 org.apache.spark.sql.functions 的“聚合函数(Aggregate Functions)”和”窗口函数(Window Functions)“类别下的函数

累计汇总

Spark SQL 窗口函数必知必会

.rowsBetween(Long.MinValue, 0)   :窗口的大小是按照 排序 从最小值到当前行

Spark SQL 窗口函数必知必会

前一行数据

Spark SQL 窗口函数必知必会

lag(field, n) : 就是取从 当前字段往前第n个 值,这里是取前一行的值

Spark SQL 窗口函数必知必会

如果计算环比的时候,是不是特别有用啊?!

在介绍几个常用的行数:

  • first/last(): 提取这个分组特定排序的第一个最后一个,在获取用户退出的时候,你可能会用到

  • lag/lead(field, n): lead 就是 lag 相反的操作,这个用于做数据回测特别用,结果回推条件

排名

Spark SQL 窗口函数必知必会

这个数据在提取每个分组的前n项时特别有用,省了不少麻烦。

Spark SQL 窗口函数必知必会

大家都在看

关注 【spark技术分享】

一起撸spark源码,一起玩spark最佳实践

Spark SQL 窗口函数必知必会


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

界面设计模式

界面设计模式

Jenifer Tidwell / 东南大学,O‘Reilly / 2011-5 / 99.00元

尽管目前已经存在了各种各样的用户界面设计工具,设计良好的应用界面仍然不是一件容易的事情。这本畅销书是极少数可以信赖的资料,它能帮助你走出设计选项的迷宫。通过把捕捉到的最佳实践和重用思想体现为设计模式,《界面设计模式》提供了针对常见设计问题的解决方案,这些方案可以被裁减以适用于你的具体情况。本修订版包括了手机应用和社交媒体的模式,以及web应用和桌面软件。每个模式包含了用全彩方式展现的运用技巧,以及......一起来看看 《界面设计模式》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具