r语言 - 在 Sparklyr 中断开连接后,Spark 数据帧会自动删除吗?如果没有,我们该怎么做?



关闭连接时,以以下方式复制到 Spark 的数据帧会发生什么情况?

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

如果它们没有自动删除,除了通过以下方式删除每个数据帧之外,是否有任何简单的方法可以删除会话期间创建的所有数据帧?

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

即使它是自动完成的,当 Spark 看到有必要清理临时视图时,它是立即完成还是懒惰地完成?

我有一个脚本,它不断调用 spark 并将临时数据帧复制到 spark 中进行一些操作。我担心如果最终不删除这些临时数据帧,则会堆积在集群中。

一般来说,Spark 中临时视图的生命周期与相应SparkSession的生命周期紧密耦合,并且不能在其范围之外访问(全局视图是一个例外,但与标准视图相同,不能超过其会话(。如果JVM会话被关闭和/或垃圾回收,相应的临时空间将被抓取。

但是,临时视图不会以其他方式删除,因此只要会话存在,临时表也会随之删除。

正如我在其他地方解释的那样(如何使用sparklyr删除Spark DataFrame?(,这通常不是一个严重的问题。

相关内容

最新更新