火花流状态存储 - 内存使用

时间:2017-11-21 01:21:18

标签: apache-spark spark-streaming

您好我正在使用Spark 2.2运行流式作业,并使用mapWithState

维护几个状态

批处理间隔为4分钟。我每20分钟检查一次Kinesis Dstream。

我还重新分区并缓存了Kinesis Dstream,因为它用于多个执行路径。

当我查看存储选项卡时,我总是看到63个RDD(21个用于MapPartitionsRDD,21个MapWithStateRDD用于状态1,21个MapWithStateRDD用于状态2)。

如何减少存储空间?我应该检查mapWithState Dstream吗?

Storage TAB

1 个答案:

答案 0 :(得分:1)

因此,在阅读mapWithStateDstream的源代码时,我发现记住持续时间决定了将记住多少个rdd批次"#34;或者缓存在记忆中。

默认值为2 * checkpoint_duration

默认的checkpoint_duration是10 * batch_duration。

因此您可以通过调用checkpoint方法在mapWithStateDstream上指定checkpoint_duration,并将其设置为5 * batch_duration,以将存储空间减少50%。