我为数据集调用persist方法,通常它工作正常但有时它永远不会完成。我在Spark 2.1中使用了cloudera。有人经历过同样的事吗
originalDataSet = originalDataSet.persist(StorageLevel.MEMORY_AND_DISK());
答案 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