当我运行我的鲨鱼查询时,内存会被囤积在主内存中 这是我的最高命令结果。
内存:74237344k总计,70080492k使用,4156852k免费,399544k缓冲 交换:总计4194288k,使用480k,免费4193808k,缓存65965904k
即使我杀死/停止鲨鱼,火花,hadoop进程,这也不会改变。 现在,清除缓存的唯一方法是重启机器。
以前有人遇到过这个问题吗?是火花/鲨鱼的一些配置问题还是已知问题?
答案 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部分中,而不是操作系统的缓存部分中。