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
更多>>
无重复字符的最长子串
题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1: 输入: "abcabcbb" 输出: 3解释: 因为无重复字符的最长子串...详情>>
2022-10-11 14:52:00
如何自定义累加器
spark提供了一个累加器用于在整个流程中额外执行一个MR任务,它可以在driver端被初始化发送给各个Task,然后在每个Task中为它添加数据,最终经...详情>>
2022-09-30 15:17:00
如何写数据
1. 客户端从zk中获取meta表位置,到对应regionServer上获取该表,或直接从缓存中读取该表。 2. 客户端从meta表中获取要写的数据存放的region和...详情>>
2022-09-26 11:24:00
spark作业的最大并行度
spark作业的最大并行度=excutor个数*每个excutor的cpu core数 但spark的当前并行度取决于task数,而task数=分区数。详情>>
2022-09-23 16:29:00
kafka的topic,partition,replica,message的理解
如果配置为2,表示除了leader节点,对于topic里的每一个partition,都会有一个额外的备份。message:实际写入Kafka中并可以被读取的消息记录。每...详情>>
2022-09-20 16:59:00丝瓜视频官方 丝瓜视频苹果版 问答更多>>
新丝瓜视频官方 适合女生学吗?
新哪家丝瓜视频官方 分析丝瓜视频苹果版 班好
新丝瓜视频官方 丝瓜视频苹果版 班需要多少钱?怎么挑选丝瓜视频官方 丝瓜视频苹果版 班
新丝瓜视频官方 丝瓜视频苹果版 班需要多少钱?丝瓜视频官方 就业方向有哪些
新丝瓜视频官方 丝瓜视频苹果版 班靠谱吗?丝瓜视频官方 发展前景怎么样
新丝瓜视频官方 分析丝瓜视频苹果版 哪里好
新丝瓜视频官方 丝瓜视频苹果版 学费多少?课程内容是什么
丝瓜视频官方 面试题库 更多>>
丝瓜视频官方 的五个V是什么?
数据及集群管理(三)
数据及集群管理(二)
数据及集群管理(一)
丝瓜视频官方 之hbase的优化读数据方面
丝瓜视频官方 之hbase的优化写入数据方面
开班信息
北京校区
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
