Spark Streamings状态存储在哪里?

dmi*_*ony 3 apache-spark spark-streaming

我正在使用Spark Streaming updateStateByKey()mapWithState()函数,但我不清楚哪里保存了状态.状态是否保存在HDFS上?或者它是内存存储?如何保证容错?

Yuv*_*kov 5

Spark Streaming目前有两个有状态流实现.一个是较旧的PairRDDFunctions.updateStateByKey(Spark <= 1.5.0),它使用a CoGroupedRDD来存储每个键的状态.名为PairRDDFunctions.mapWithState(Spark> = 1.6.0)的较新版本使用a OpenHashMapBasedStateMap[K, V]来存储内部状态.这两个都是内存中的实现

这两个有状态流都使用检查点作为持久容错的机制.检查点位置可以是HDFS或亚马逊的S3,其中数据在每个间隔持久存在,该间隔由用户使用DStream.checkpoint或将默认为(批处理间隔*常数)定义.使用有状态流时,您有义务指定检查点目录.