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

ven*_*kat 20 hadoop hive apache-spark shark-sql

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


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


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

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

her*_*man 30

您是否使用该cache()方法来持久保存RDD?

cache()只是调用persist(),所以要删除RDD的缓存,调用unpersist().


Hen*_*cio 23

要删除所有缓存数据,您可以执行以下操作:

sqlContext.clearCache()

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

  • 使用“spark.catalog.clearCache()” (3认同)

Sha*_*awn 8

这很奇怪。问的问题与答案无关。发布的缓存OP归操作系统所有,与spark无关。这是操作系统的优化,我们不应该担心那个特定的缓存。

Spark 缓存通常在内存中,但这将在 RSS 部分,而不是操作系统的缓存部分。


San*_*kar 5

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

for ((k,v) <- sc.getPersistentRDDs) {
   v.unpersist()
}
Run Code Online (Sandbox Code Playgroud)

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

Scala> sc.getPersistentRDDs

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