如何使鲨鱼/火花清除缓存?

时间:2013-12-11 11:19:42

标签: hadoop hive apache-spark shark-sql

当我运行我的鲨鱼查询时,内存会被囤积在主内存中 这是我的最高命令结果。


内存:74237344k总计,70080492k使用,4156852k免费,399544k缓冲 交换:总计4194288k,使用480k,免费4193808k,缓存65965904k


即使我杀死/停止鲨鱼,火花,hadoop进程,这也不会改变。 现在,清除缓存的唯一方法是重启机器。

以前有人遇到过这个问题吗?是火花/鲨鱼的一些配置问题还是已知问题?

4 个答案:

答案 0 :(得分:29)

您是否使用cache()方法来保留RDD?

cache()只需调用persist(),因此要删除RDD的缓存,请致电unpersist()

答案 1 :(得分:18)

删除所有缓存数据:

sqlContext.clearCache()

来源:https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/sql/SQLContext.html

答案 2 :(得分:1)

我遵循了这个,对我来说效果很好::

for ((k,v) <- sc.getPersistentRDDs) {
   v.unpersist()
}
  

sc.getPersistentRDDs是一个Map,用于存储缓存数据的详细信息。

     

scala> sc.getPersistentRDDs

     

res48:scala.collection.Map [Int,org.apache.spark.rdd.RDD [_]] = Map()

答案 3 :(得分:0)

这很奇怪。提出的问题与答案无关。发布的缓存OP由操作系统拥有,与spark无关。这是对操作系统的优化,我们不必担心该特定缓存。

火花缓存通常位于内存中,但这将位于RSS部分中,而不是操作系统的缓存部分中。