您好我正在使用Spark 2.2运行流式作业,并使用mapWithState
维护几个状态批处理间隔为4分钟。我每20分钟检查一次Kinesis Dstream。
我还重新分区并缓存了Kinesis Dstream,因为它用于多个执行路径。
当我查看存储选项卡时,我总是看到63个RDD(21个用于MapPartitionsRDD,21个MapWithStateRDD用于状态1,21个MapWithStateRDD用于状态2)。
如何减少存储空间?我应该检查mapWithState Dstream吗?
答案 0 :(得分:1)
因此,在阅读mapWithStateDstream的源代码时,我发现记住持续时间决定了将记住多少个rdd批次"#34;或者缓存在记忆中。
默认值为2 * checkpoint_duration
默认的checkpoint_duration是10 * batch_duration。
因此您可以通过调用checkpoint方法在mapWithStateDstream上指定checkpoint_duration,并将其设置为5 * batch_duration,以将存储空间减少50%。