我已停止将数据提供给Spark,但我仍然可以看到Spark保留删除RDD,如下所示:
15/07/30 10:03:10 INFO BlockManager: Removing RDD 136661
15/07/30 10:03:10 INFO BlockManager: Removing RDD 136662
15/07/30 10:03:10 INFO BlockManager: Removing RDD 136664
15/07/30 10:03:10 INFO BlockManager: Removing RDD 136663
即使没有新数据和RDD生成,我也很困惑为什么spark会继续删除RDD。
答案 0 :(得分:2)
这是因为您可能在分布式模式下运行它?数据分布在多个节点上,因此应该在整个网络上反映出来。所以它不可能是即时的。
答案 1 :(得分:2)
正如您可能知道的那样,Spark使用LRU算法管理持久化的RDD。虽然您没有添加更多数据,但Spark完全有可能删除这些RDD,因为它们已经超出Spark应用程序(作业)的范围,或者只是“太老了”。&#34 ;
缓存的RDD的生命周期由TimeStampedWeakValueHashMap管理。基本上,如果RDD的时间戳早于特定阈值,则在调用clearOldValues()时将删除RDD。
您的回答暗示您希望确保这些RDD不会被删除,因此您可能希望查看persisting your Spark data directly into Cassandra,因为它们可以很好地协同工作。