关闭连接时,以以下方式复制到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会堆积在集群中。
1条答案
按热度按时间omhiaaxx1#
一般来说,spark中临时视图的生命周期与相应视图的生命周期是紧密耦合的
SparkSession
并且不能在其作用域之外访问(全局视图是一个例外,但与标准视图相同,不能超过其会话)。如果jvm会话被关闭和/或垃圾回收,则会刮取相应的临时空间。但是,临时视图不会被删除,所以只要会话有效,临时表也会被删除。
正如我在其他地方解释的(如何使用sparkyr删除sparkDataframe?),这通常不是一个严重的问题。