Spark Streamings状态存储在哪里?

时间:2016-05-30 10:19:15

标签: apache-spark spark-streaming

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

状态存储在检查点目录中,该目录在流式上下文启动期间指定。有关检查点和容错的详细信息,请参阅documentation