当我运行我的鲨鱼查询时,内存被囤积在主内存中这是我的顶级命令结果。
内存:总计 74237344k,已使用 70080492k,可用 4156852k,399544k 缓冲区交换:总计 41942888k,已使用 480k,可用 4193808k,缓存 65965904k
即使我杀死/停止鲨鱼、火花、hadoop 进程,这也不会改变。现在,清除缓存的唯一方法是重新启动机器。
有没有人遇到过这个问题?是一些配置问题还是 spark/shark 中的已知问题?
当我运行我的鲨鱼查询时,内存被囤积在主内存中这是我的顶级命令结果。
内存:总计 74237344k,已使用 70080492k,可用 4156852k,399544k 缓冲区交换:总计 41942888k,已使用 480k,可用 4193808k,缓存 65965904k
即使我杀死/停止鲨鱼、火花、hadoop 进程,这也不会改变。现在,清除缓存的唯一方法是重新启动机器。
有没有人遇到过这个问题?是一些配置问题还是 spark/shark 中的已知问题?
要删除所有缓存的数据:
sqlContext.clearCache()
来源:https ://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/sql/SQLContext.html
如果要从缓存中删除特定的 Dataframe:
df.unpersist()
您是否使用该cache()
方法来持久化 RDD?
cache()
只需调用persist()
,因此要删除 RDD 的缓存,请调用unpersist()
.
这很奇怪。提出的问题与答案无关。发布的缓存OP归操作系统所有,与spark无关。这是对操作系统的优化,我们不应该担心那个特定的缓存。
Spark 缓存通常在内存中,但这将在 RSS 部分,而不是操作系统的缓存部分。
我跟着这个,它对我来说很好::
for ((k,v) <- sc.getPersistentRDDs) {
v.unpersist()
}
sc.getPersistentRDDs 是一个存储缓存数据详细信息的 Map。
scala> sc.getPersistentRDDs
res48: scala.collection.Map[Int,org.apache.spark.rdd.RDD[_]] = Map()
提出的解决方案:
sqlContext.clearCache()
给了我一个错误,我不得不改用这个:
sqlContext.catalog.clearCache()