当我运行shark查询时,内存被囤积在主内存中,这是我的最高命令结果。内存:总计74237344k,已用70080492k,可用4156852k,399544k缓冲区交换:总计4194288k,已用480k,可用4193808k,缓存65965904k即使我杀死/停止shark、spark、hadoop进程,这种情况也不会改变。现在,清除缓存的唯一方法是重新启动机器。以前有人遇到过这个问题吗?spark/shark中是否存在配置问题或已知问题?
uplii1fm1#
要删除所有缓存数据,请执行以下操作:
sqlContext.clearCache()
资料来源:https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/sql/sqlcontext.html如果要从缓存中删除特定的Dataframe:
df.unpersist()
lnvxswe22#
你在用那个吗 cache() 持久化RDD的方法? cache() 只是打电话而已 persist() ,因此要删除rdd的缓存,请调用 unpersist() .
cache()
persist()
unpersist()
iyzzxitl3#
这很奇怪。所问的问题与答案无关。发布的缓存操作属于操作系统,与spark无关。这是对操作系统的优化,我们不应该担心特定的缓存。spark缓存通常在内存中,但它将在rss部分,而不是os的缓存部分。
ogq8wdun4#
我跟着这一个,它对我来说很好:
for ((k,v) <- sc.getPersistentRDDs) { v.unpersist() }
getpersistentrdds是存储缓存数据细节的Map。scala>sc.getpersistentrddsres48:scala.collection.map[int,org.apache.spark.rdd.rdd[]]=map()
4条答案
按热度按时间uplii1fm1#
要删除所有缓存数据,请执行以下操作:
资料来源:https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/sql/sqlcontext.html
如果要从缓存中删除特定的Dataframe:
lnvxswe22#
你在用那个吗
cache()
持久化RDD的方法?cache()
只是打电话而已persist()
,因此要删除rdd的缓存,请调用unpersist()
.iyzzxitl3#
这很奇怪。所问的问题与答案无关。发布的缓存操作属于操作系统,与spark无关。这是对操作系统的优化,我们不应该担心特定的缓存。
spark缓存通常在内存中,但它将在rss部分,而不是os的缓存部分。
ogq8wdun4#
我跟着这一个,它对我来说很好:
getpersistentrdds是存储缓存数据细节的Map。
scala>sc.getpersistentrdds
res48:scala.collection.map[int,org.apache.spark.rdd.rdd[]]=map()