在SparkyR中断开连接后,sparkDataframe是否自动删除?如果没有,我们怎么做?

a5g8bdjr  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(353)

关闭连接时,以以下方式复制到spark的Dataframe会发生什么变化?

library(sparklyr)
library(dplyr)
sc <- spark_connect(master = "local")
iris_tbl <- copy_to(sc, iris)
spark_disconnect(sc)

如果它们不是自动删除的,除了用以下方法删除每个Dataframe之外,还有什么简单的方法可以删除会话期间创建的所有Dataframe吗?

sc %>% spark_session() %>% invoke("catalog") %>% invoke("dropTempView", "iris")

即使它是自动完成的,但当spark认为有必要清理临时视图时,它是立即完成还是延迟完成的?
我有一个脚本,它不断地调用spark并将临时Dataframe复制到spark中进行一些操作。我担心的是,如果最后不删除,那些临时Dataframe会堆积在集群中。

omhiaaxx

omhiaaxx1#

一般来说,spark中临时视图的生命周期与相应视图的生命周期是紧密耦合的 SparkSession 并且不能在其作用域之外访问(全局视图是一个例外,但与标准视图相同,不能超过其会话)。如果jvm会话被关闭和/或垃圾回收,则会刮取相应的临时空间。
但是,临时视图不会被删除,所以只要会话有效,临时表也会被删除。
正如我在其他地方解释的(如何使用sparkyr删除sparkDataframe?),这通常不是一个严重的问题。

相关问题