Apache spark spark流状态存储-内存使用

Apache spark spark流状态存储-内存使用,apache-spark,spark-streaming,Apache Spark,Spark Streaming,您好,我正在使用Spark 2.2运行一个流媒体作业,并使用mapWithState维护几个状态 批次间隔为4分钟。我每20分钟检查一次运动数据流 我还重新分区和缓存了Kinesis数据流,因为它用于多个执行路径 当我查看存储选项卡时,我总是看到63个RDD(21个用于MapPartitionsRDD,21个用于状态1的MapWithStateRDD,21个用于状态2的MapWithStateRDD) 如何减少存储空间?我应该检查mapWithState数据流吗 阅读mapWithStateDs

您好,我正在使用Spark 2.2运行一个流媒体作业,并使用mapWithState维护几个状态

批次间隔为4分钟。我每20分钟检查一次运动数据流

我还重新分区和缓存了Kinesis数据流,因为它用于多个执行路径

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

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


阅读mapWithStateDstream的源代码后,我发现记忆持续时间决定了多少rdd批次将被“记忆”或缓存在内存中

默认值为2*检查点持续时间

默认检查点持续时间为10*批处理持续时间

因此,您可以通过调用checkpoint方法在mapWithStateDstream上指定checkpoint_持续时间,并将其设置为5*batch_持续时间,以将存储减少50%