【问题标题】:How to make shark/spark clear the cache?如何让鲨鱼/火花清除缓存?
【发布时间】:2013-12-29 08:13:15
【问题描述】:

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


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


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

以前有人遇到过这个问题吗?是一些配置问题还是 spark/shark 中的已知问题?

【问题讨论】:

标签: hadoop hive apache-spark shark-sql


【解决方案1】:

要删除所有缓存的数据:

sqlContext.clearCache()

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

如果您想从缓存中删除特定的 Dataframe:

df.unpersist()

【讨论】:

    【解决方案2】:

    您是否使用cache() 方法来持久化RDD?

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我关注了这个,它对我来说很好::

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

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

        scala> sc.getPersistentRDDs

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

        【讨论】:

          【解决方案5】:

          提出的解决方案:

          sqlContext.clearCache()
          

          给了我一个错误,我不得不改用这个:

          sqlContext.catalog.clearCache()
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-10-16
            • 1970-01-01
            • 1970-01-01
            • 2014-04-02
            • 1970-01-01
            • 1970-01-01
            • 2020-09-20
            • 2019-04-29
            相关资源
            最近更新 更多