首页 文章

如何使用sparklyr删除Spark DataFrame?

提问于
浏览
0

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

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

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

1 回答

  • 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'
    ...
    

相关问题