UpdateStateByKey
原语用于记录历史记录,有时,我们需要在 DStream 中跨批次维护状态
updateStateByKey()为我们提供了对一个状态变量的访问,用于键值对形式的 DStream
为使用这个功能,需要做下面两步:
-
定义状态,状态可以是一个任意的数据类型。
-
定义状态更新函数,用此函数阐明如何使用之前的状态和来自输入流的新值对状态进行更新。
使用 updateStateByKey 需要对检查点目录进行配置,会使用检查点来保存状态。
Window Operations
可以设置窗口的大小和滑动窗口的间隔来动态的获取当前 Steaming 的允许状态。
基于窗口的操作需要两个参数
1.窗口时长:计算内容的时间范围
2.滑动步长:隔多久触发一次计算
这两者都必须为采集周期大小的整数倍
DStream输出
输出操作指定了对流数据经转化操作得到的数据所要执行的操作
与 RDD 中的惰性求值类似,如果一个 DStream 及其派生出的 DStream 都没有被执行输出操作,那么这些 DStream 就都不会被求值
连接不能写在 driver 层面(序列化)
如果写在 foreach 则每个 RDD 中的每一条数据都创建,得不偿失;
增加 foreachPartition,在分区创建(获取)