ank*_*tel 22 apache-spark spark-streaming apache-spark-sql
我使用Spark 1.3.0和python api.在转换庞大的数据帧时,我会缓存许多DF以加快执行速度;
df1.cache()
df2.cache()
Run Code Online (Sandbox Code Playgroud)
一旦某些数据帧的使用结束并且不再需要,我怎样才能从内存中删除DF(或取消缓存它?)?
例如,df1在用于df2少量转换的情况下使用整个代码,之后,它永远不需要.我想强行放下df2以释放更多的内存空间.
Ale*_*der 44
只需执行以下操作:
df1.unpersist()
df2.unpersist()
Run Code Online (Sandbox Code Playgroud)
Spark会自动监视每个节点上的缓存使用情况,并以最近最少使用(LRU)的方式删除旧数据分区.如果您想手动删除RDD而不是等待它退出缓存,请使用RDD.unpersist()方法.
mrs*_*vas 19
如果数据帧注册为SQL操作的表,就像
df.createGlobalTempView(tableName) // or some other way as per spark verision
Run Code Online (Sandbox Code Playgroud)
然后可以使用以下命令删除缓存,off-course spark也会自动执行
这spark是一个对象SparkSession
从缓存中删除特定的表/ df
Run Code Online (Sandbox Code Playgroud)spark.catalog.uncacheTable(tableName)从缓存中删除所有表/ dfs
Run Code Online (Sandbox Code Playgroud)spark.catalog.clearCache()
从缓存中删除特定的表/ df
Run Code Online (Sandbox Code Playgroud)sqlContext.uncacheTable(tableName)从缓存中删除所有表/ dfs
Run Code Online (Sandbox Code Playgroud)sqlContext.clearCache()
| 归档时间: |
|
| 查看次数: |
39249 次 |
| 最近记录: |