【问题标题】:How to delete a Spark DataFrame using sparklyr?如何使用 sparklyr 删除 Spark DataFrame?
【发布时间】:2023-03-23 10:12:01
【问题描述】:

我使用下面的方法创建了一个名为“iris”的 Spark 数据框

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

现在我想删除 Spark 数据帧“iris”(不是 R 中的数据帧)我该怎么做?

【问题讨论】:

  • rm(iris) .....?
  • @Tung 我想删除 spark data.frame 而不是 R data.frame。

标签: r apache-spark dplyr sparklyr


【解决方案1】:

这完全取决于您说删除数据框时的内容。您必须记住,通常,Spark 数据帧与普通本地数据结构不是同一类型的对象。 Spark DataFrame 与其说是一个数据容器,不如说是一个描述。

sparklyr 本身,主要依赖于 Spark SQL 接口。当您调用copy_to(或任何其他数据导入方法时,它:

  • 注册一个临时表。
  • 使用默认参数(确实应该避免)它会急切地缓存表。

这意味着删除数据框的自然方法是删除临时视图(通过dplyr / dbplyr 引用它by its name

db_drop_table(sc, "iris")

或 Spark 自己的方法:

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

请注意,这将使本地绑定无效,因此在调用上述任何方法后访问iris_tbl 的任何尝试都将失败:

iris_tbl 
Error: org.apache.spark.sql.AnalysisException: Table or view not found: iris; line 2 pos 5
...
Caused by: org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'iris' not found in database 'default'
...

【讨论】:

    猜你喜欢
    • 2019-11-15
    • 2022-12-15
    • 1970-01-01
    • 2017-04-22
    • 2019-03-17
    • 2017-04-27
    • 2018-01-14
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多