在 sparklyr 中断开连接后,spark 数据帧是否会自动删除?如果没有,我们该怎么做?

Are spark dataframes automatically deleted after disconnecting in sparklyr? If not, how do we do it?

在关闭连接时,以下列方式复制到 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的生命周期紧密耦合,不能超出其范围访问(全局视图是一个例外,但与标准视图一样,不能超过它们的生命周期session)。如果 JVM session 关闭和/或垃圾回收,相应的临时 space 将被废弃。

但是临时视图不会被删除,所以只要 session 存在,临时表也会存在。

正如我在别处解释的那样 (How to delete a Spark DataFrame using sparklyr?) 这通常不是一个严重的问题。