Window Operations详解
window(windowLength, slideInterval):返回窗口长度为windowLength,每隔slideInterval滑动一次的window DStream
countByWindow(windowLength, slideInterval):返回窗口中元素的个数
reduceByWindow(func, windowLength, slideInterval):对window中的元素做reduce操作
1 2 3 4 5 6 | // x, y 是window中的元素 val ds1 = wordCounts.reduceByWindow((x, y) => { println(x) println(y) x }, Seconds( 30 ), Seconds( 20 )) |
reduceByKeyAndWindow(func, windowLength, slideInterval, [numTasks]) 针对window内的数据做reduceByKey
1 2 | // x y 是相同key的value wordCounts.reduceByKeyAndWindow((x: Int, y:Int) => x + y, Seconds( 30 ), Seconds( 20 )) |
reduceByKeyAndWindow(func, invFunc, windowLength, slideInterval, [numTasks]): invFunc:假设invFunc的参数为x和y,那么x是上个window经过func操作后的结果,y为此次window与上次window在时间上交叉的元素经过func操作后结果
1 2 3 | sc.setCheckpointDir( "D://checkpoints/" ) // m是上个window key相同的元素的reduceByKeyAndWindow第一个参数操作后的结果,n为上个window与当前window在时间上不重复的key相同的元素的reduceByKeyAndWindow第一个参数操作后的结果 val ds1 = wordCounts.reduceByKeyAndWindow((x, y) => x + y, (m, n) => { m - n}, Seconds( 10 ), Seconds( 10 )) |
1 2 | // 这个方法的作用和<strong>reduceByKeyAndWindow(func, windowLength, slideInterval, [numTasks])相同 wordCounts.reduceByKeyAndWindow((x, y) => x + y, (x, y) => x - y, Seconds( 10 ), Seconds( 10 )) |
countByValueAndWindow(windowLength, slideInterval, [numTasks]):window中key出现的次数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步