【发布时间】:2018-07-08 06:06:23
【问题描述】:
我为数据集调用persist方法,通常它工作正常,但有时它永远不会完成。我将 cloudera 与 Spark 2.1 一起使用。有没有人有同样的经历?
originalDataSet = originalDataSet.persist(StorageLevel.MEMORY_AND_DISK());
【问题讨论】:
标签: apache-spark spark-dataframe cloudera
我为数据集调用persist方法,通常它工作正常,但有时它永远不会完成。我将 cloudera 与 Spark 2.1 一起使用。有没有人有同样的经历?
originalDataSet = originalDataSet.persist(StorageLevel.MEMORY_AND_DISK());
【问题讨论】:
标签: apache-spark spark-dataframe cloudera
就像 Spark 中的其他所有内容一样,persist 操作是惰性求值的。第一次对底层数据执行操作,并执行 DAG 的相关部分时,它们将发挥作用。
因此,您不应该也不会从 persist 命令本身看到任何问题。
数据是持久化的,在本例中是存储到内存和磁盘,但仅存储到容量点。如果由于缓存容量不足而需要删除该数据,Spark 会这样做。
Spark 自动监控每个节点上的缓存使用情况并退出 以最近最少使用 (LRU) 方式的旧数据分区。如果你 想手动移除一个 RDD 而不是等待它掉落 从缓存中取出,使用 RDD.unpersist() 方法。
见https://spark.apache.org/docs/2.2.0/rdd-programming-guide.html#rdd-persistence
【讨论】: