Spark persist方法永远不会完成

时间:2018-01-29 14:01:51

标签: apache-spark spark-dataframe cloudera

我为数据集调用persist方法,通常它工作正常但有时它永远不会完成。我在Spark 2.1中使用了cloudera。有人经历过同样的事吗

originalDataSet = originalDataSet.persist(StorageLevel.MEMORY_AND_DISK());

1 个答案:

答案 0 :(得分:1)

就像Spark中的其他所有内容一样,persist操作被懒惰地评估。第一次对基础数据采取行动,并执行DAG的相关部分,然后它们将继续发挥作用。

因此,您不应该也不会从persist命令本身看到任何问题。

数据被保留,在本例中为内存和磁盘,但仅限于容量点。如果由于缓存容量不足而需要删除该数据,那么Spark将会这样做。

  

Spark会自动监控每个节点上的缓存使用情况并退出   最近最少使用(LRU)方式的旧数据分区。如果你   想手动删除RDD而不是等待它掉下来   在缓存之外,使用RDD.unpersist()方法。

请参阅https://spark.apache.org/docs/2.2.0/rdd-programming-guide.html#rdd-persistence