我在不同的存储级别上使用持久性,但在使用MEMORY_ONLY
和DISK_ONLY
时,我发现性能没有差异。
我认为我的代码可能有问题...我在哪里可以找到磁盘上的持久RDD,以便确保它们实际上是持久的?
答案 0 :(得分:4)
根据文件:
spark.local.dir
(默认为/tmp
)用于" scratch"的目录Spark中的空间,包括映射输出文件和存储在磁盘上的RDD。这应该位于系统中的快速本地磁盘上。它也可以是不同磁盘上多个目录的逗号分隔列表。注意:在Spark 1.0及更高版本中,这将由集群管理器设置的SPARK_LOCAL_DIRS(Standalone,Mesos)或LOCAL_DIRS(YARN)环境变量覆盖。
答案 1 :(得分:2)
观察的两个可能原因:
count()
persist()
)
persist()
发生了,实际数据实际上可能无法写入磁盘,您的write方法会在数据写入buffer cache后直接返回,因此,当您阅读它时在写入之后,它只返回缓存的数据。那么,坚持到底了吗?
在将rdd保持为Buffer cache
后,您是否清除了每个节点上的linux DISK_ONLY
,然后对其进行操作并测量性能?
所以我建议你做的是:
cache
sync && echo 3 > /proc/sys/vm/drop_caches