【发布时间】:2015-09-13 17:06:33
【问题描述】:
当我运行如下代码时:
val newRDD = prevRDD.map(a => (a._1, 1L)).distinct.persist(StorageLevel.MEMORY_AND_DISK_SER)
newRDD.checkpoint
print(newRDD.count())
并观察 Yarn 中的各个阶段,我注意到 Spark 正在执行 DAG 计算 TWICE - 一次用于实现 RDD 并缓存它的 distinct+count,然后完全是第二次创建检查点副本。
既然 RDD 已经物化和缓存了,为什么检查点不简单地利用这一点,将缓存的分区保存到磁盘?
是否有现有的方法(某种配置设置或代码更改)来强制 Spark 利用这一点并且只运行一次操作,而检查点只会复制内容?
我是否需要“物化”两次?
val newRDD = prevRDD.map(a => (a._1, 1L)).distinct.persist(StorageLevel.MEMORY_AND_DISK_SER)
print(newRDD.count())
newRDD.checkpoint
print(newRDD.count())
我创建了一个 Apache Spark Jira 票证来提出这个功能请求: https://issues.apache.org/jira/browse/SPARK-8666
【问题讨论】:
标签: caching apache-spark rdd persist checkpoint