在我的Spark Streaming 1.6应用程序中,我想将某些值存储在mapWithState
中,然后定期将它们作为备份选项保存到磁盘。
JavaMapWithStateDStream<String, SwMessage, CcState, Tuple2<String, CcState>> SwMessageWithState =
pairSwMsg.
mapWithState(StateSpec.function(mappingFunc).
initialState(cStateMap));
对于备份,我正在使用stateSnapshots()
方法,如下所示。
SwMessageWithState.stateSnapshots().
saveAsHadoopFiles("/ccd/snap", "txt",String.class,CcState.class, TextOutputFormat.class);
我面临的问题是程序在第一批处理后停止使用消息,然后什么也不做。
如果我在stateSnapshots()
行中添加注释,则程序运行正常。
有人可以暗示上述说法到底有什么问题吗?
我还考虑在下次initialState
作业运行时将snapshopt目录作为SparkStreaming
状态文件。