Spark Streaming 窗口函数
Spark Streaming 窗口函数
理解窗口的两个关键概念,窗口长度(window length)和滑动间隔(slide interval)。 窗口函数会把原始 DStream 的若干批次的数据合并成为一个新的带窗口的DStream。其中窗口长度即每次生成新 DStream 需合并的原始 DStream 个数。滑动间隔即合并的原始 DStream 的时间间隔。如下图,窗口长度为3,滑动间隔为2,注意这两个值必须是源DStream批处理时间间隔的倍数
window
根据窗口长度和窗口移动速率合并原始DStream 生成新DStream。
每2 秒生成一个窗口长度为5 秒的Dstreamval windowedDstream= dstream.countByWindow(Seconds(5),Seconds(2))
countByWindow
返回指定长度窗口中的元素个数
每2 秒统计一次近5 秒长度时间窗口的DStream 中元素的个数
val windowedDstream= dstream.countByWindow(Seconds(5),Seconds(2))
reduceByWindow(func, windowLength, slideInterval)
对设定窗口的DStream 做 reduce 操作,类似RDD 的 reduce 操作,只是增加了时间窗口维度。
每2 秒合并一次近5 秒长度时间窗口的DStream 中元素用“-”分隔
val windowedDstream= dstream.reduceByWindow(_+"-"+_,Seconds(5),Seconds(2))
reduceByKeyAndWindow(func, windowLength, slideInterval, [numTasks])
根据Key 和Window 来做Reduce 聚合操作,
在上述 reduceByWindow 的基础上增加了Key 维度,func 是相同Key 的 value 值的聚合操作函数。
数据源的DStream 中的元素格式必须为(k, v) 形式,windowLength 和 slideInterval
同样是用于确定一个窗口Dstream 作为数据源。numTasks 是一个可选的并发数参数。
每2 秒根据Key 聚合一次窗口长度为5 的DStream 中元素,下例中聚合的方式为 value 相加。
val windowedDstream= pairsDstream.reduceByKeyAndWindow((a:Int, b:Int)=>(a+ b),Seconds(5),Seconds(2))
reduceByKeyAndWindow(func, invFunc, windowLength, slideInterval, [numTasks])
这个方法比上一个多传入一个函数 invFunc。func 是 value 值的聚合操作函数,在数据流入的时候执行这个操作。
invFunc 是在数据流出窗口的范围后执行的操作。
每2 秒根据Key 聚合一次窗口长度为5 的DStream 中元素,聚合的方式为 value 相加。
invFunc:假设 invFunc 的参数如下例为 a 和 b,那么 a 是上个 window 经过 func 操作后的结果,
b 为此次 window 与上次 window 在时间上交叉的元素经过 func 操作后结果。
val windowedDstream= pairsDstream.reduceByKeyAndWindow((a:Int, b:Int)=>(a+ b),(a:Int, b:Int)=>(a- b),Seconds(5),Seconds(2))
countByValueAndWindow(windowLength, slideInterval, [numTasks])
统计时间窗口中元素值相同的元素个数,
类似于RDD 的 countByValue 操作,在这个基础上增加了时间窗口维度。同样,数据源的DStream 中的元素格式必须为(k, v) 形式,
返回的DStream 格式为(K,Long)。
每2 秒根据Key 聚合一次窗口长度为5 的DStream 中元素,
下例中聚合的方式为 value 相加val windowedDstream= pairsDstream.countByValueAndWindow(Seconds(5),Seconds(2))
猜你喜欢LIKE
相关推荐HOT
更多>>索引有什么作用?在mongodb中索引分为几类
索引(Index)是数据库中的一种数据结构,用来提高数据检索的效率。它们可以帮助数据库系统快速地定位和访问需要的数据。在 MongoDB 中,索引也很...详情>>
2023-04-11 13:43:47主键约束是什么意思?如何实现mysql主键约束
主键约束是一种在数据库中用于保证表中某个列的唯一性和非空性的约束,该列将成为表的主键。主键的作用是为了唯一标识表中的每一行数据,以方便...详情>>
2023-03-17 16:51:01eureka和zookeeper的区别对比
Eureka和Zookeeper都是服务发现和注册的工具,但它们有以下几个不同点:架构设计:Eureka采用了集中式的架构,其中一个服务作为Eureka Server,...详情>>
2023-03-07 15:35:18Zookeeper和Eureka的区别都有哪些?
Zookeeper和Eureka都是分布式系统中常用的服务发现和注册组件,它们的主要区别如下:数据一致性:Zookeeper是一个高度可靠的分布式数据一致性解...详情>>
2023-03-07 15:26:19zookeeper和eureka的区别介绍
1.架构设计:ZooKeeper是一个分布式的协调服务,它提供了高可用、高可靠性的数据存储和协调服务,可以作为分布式系统中的一个通用组件使用。而E...详情>>
2023-03-03 15:00:46大数据培训问答更多>>
新大数据都学什么?5大核心知识必学内容有哪些
新大数据报班多少钱?如何选择培训机构
新人工智能学什么?自学可以成才吗
新数据处理包括哪些内容?是不是所有课程需要分别报课
新大数据分析需要学什么?怎么学比较好
新人工智能专业学什么?人工智能有哪些课程
新大数据数据分析师要学什么?好就业吗
大数据面试题库 更多>>
大数据的五个V是什么?
数据及集群管理(三)
数据及集群管理(二)
数据及集群管理(一)
大数据之hbase的优化读数据方面
大数据之hbase的优化写入数据方面
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区