SparkStreaming算子操作
这里不罗列之前RDD出现的算子
1. foreachRDD
- output operation算子,必须对抽取出来的RDD执行action类算子,代码才能执行。
2. transform
- transformation类算子
- 可以通过transform算子,对Dstream做RDD到RDD的任意操作。
3. updateStateByKey
- transformation算子
- updateStateByKey作用:
- 为SparkStreaming中每一个Key维护一份state状态,state类型可以是任意类型的,可以是一个自定义的对象,更新函数也可以是自定义的。
- 通过更新函数对该key的状态不断更新,对于每个新的batch而言,SparkStreaming会在使用updateStateByKey的时候为已经存在的key进行state的状态更新。
- 使用到updateStateByKey要开启checkpoint机制和功能。
- 多久会将内存中的数据写入到磁盘一份?
如果batchInterval设置的时间小于10秒,那么10秒写入磁盘一份。如果batchInterval设置的时间大于10秒,那么就会batchInterval时间间隔写入磁盘一份。
4. 窗口操作
- 窗口操作理解图:
假设每隔5s 1个batch,上图中窗口长度为15s,窗口滑动间隔10s。 - 窗口长度和滑动间隔必须是batchInterval的整数倍。如果不是整数倍会检测报错。
- 优化后的window窗口操作示意图:
- 优化后的window操作要保存状态所以要设置checkpoint路径,没有优化的window操作可以不设置checkpoint路径。