Apache spark 从缓存中删除spark数据帧
我将Spark 1.3.0与python api一起使用。在转换巨大的数据帧时,我缓存了许多DFs以加快执行速度Apache spark 从缓存中删除spark数据帧,apache-spark,apache-spark-sql,spark-streaming,Apache Spark,Apache Spark Sql,Spark Streaming,我将Spark 1.3.0与python api一起使用。在转换巨大的数据帧时,我缓存了许多DFs以加快执行速度 df1.cache() df2.cache() 一旦某些数据帧的使用结束并且不再需要,如何从内存中删除DF(或取消缓存) 例如,df1在整个代码中使用,而df2用于少量转换,之后就不再需要了。我想强制删除df2,以释放更多的内存空间 只需执行以下操作: df1.unpersist() df2.unpersist() Spark自动监视每个节点上的缓存使用情况并退出 以最近最少使用
df1.cache()
df2.cache()
一旦某些数据帧的使用结束并且不再需要,如何从内存中删除DF(或取消缓存)
例如,df1
在整个代码中使用,而df2
用于少量转换,之后就不再需要了。我想强制删除df2
,以释放更多的内存空间 只需执行以下操作:
df1.unpersist()
df2.unpersist()
Spark自动监视每个节点上的缓存使用情况并退出
以最近最少使用(LRU)的方式使用旧数据分区。如果你
是否希望手动删除RDD,而不是等待它掉落
在缓存之外,使用RDD.unpersist()方法
如果数据帧注册为SQL操作的表,如
df.createGlobalTempView(tableName) // or some other way as per spark verision
然后可以使用以下命令删除缓存,off-course spark也会自动执行此操作
火花>=2.x
这里spark
是SparkSession
- 从缓存中删除特定的表/df
spark.catalog.uncacheTable(tableName)
spark.catalog.clearCache()
sqlContext.uncacheTable(tableName)
sqlContext.clearCache()
- 从缓存中删除所有表/dfs
spark.catalog.uncacheTable(tableName)
spark.catalog.clearCache()
sqlContext.uncacheTable(tableName)
sqlContext.clearCache()
火花
并注意在沿袭结束后取消持久化df,因此在涉及缓存df的最后一个操作之后。我对一个数据帧“df”尝试了此操作,当我执行df.show()时,df仍在显示数据。它实际上什么时候取消持久性?@Paul对于记录来说,这实际上不是重复的原因是DataFrame API与RDD API不同。然而,这个方法调用在它们之间是共享的。为什么类型df.show()仍然显示数据?只要数据帧的输入源可用,df.show()将显示数据,而不考虑缓存。