我是spark的新手,正在寻找一个完全清除缓存的选项。深入研究后,我发现我有两个选择
SparkInstance.catalog().clearCache(); // removes all the tables from the in-memory cache
另一方面,我也可以这样做
persistentRDDs.forEach((k,v) -> {
v.unpersist(); // will unpersist all the RDD's
});
现在,我试图找到并理解的是,哪一个会是更好的选择,为什么?我相信取消持久化RDD还会从catalog()包含的内存中删除所有数据。如果我说错了,请纠正我
发布于 2020-11-21 19:00:30
如果使用函数createOrReplaceTempView将数据帧转换为表/视图,则可以使用缓存表来缓存该表。代码如下:
Df.createOrReplaceTempview(“测试”)spark.catalog.cacheTable(“测试”)
如果您想缓存数据帧本身,那么可以使用df.cache()或df.persist()。对于持久化方法,您可以根据您希望缓存数据帧的方式来传递参数。
如果你想取消缓存一个数据帧,你可以使用df.unpersist(),但是如果你想取消缓存你创建的临时表,你可以使用spark.catalog.uncacheTable("test"),如果你想取消缓存所有的临时表,那么你可以使用spark.catalog.clearcache()。
您也可以在这里查看answer以获取参考:Temp table caching with spark-sql
https://stackoverflow.com/questions/64932787
复制相似问题