9

想要从 Spark 上下文 ('sc') 中删除单个数据表。我知道可以取消缓存单个缓存表,但这与从 sc 中删除对象不同——据我所知。

library(sparklyr)
library(dplyr)
library(titanic)
library(Lahman)

spark_install(version = "2.0.0")
sc <- spark_connect(master = "local")

batting_tbl <- copy_to(sc, Lahman::Batting, "batting")
titanic_tbl <- copy_to(sc, titanic_train, "titanic", overwrite = TRUE)
src_tbls(sc) 
# [1] "batting" "titanic"

tbl_cache(sc, "batting") # Speeds up computations -- loaded into memory
src_tbls(sc) 
# [1] "batting" "titanic"

tbl_uncache(sc, "batting")
src_tbls(sc) 
# [1] "batting" "titanic"

要断开整个 sc,我会使用spark_disconnect(sc),但在此示例中,它将破坏存储在 sc 中的“泰坦尼克号”和“击球”表。

相反,我想删除例如“击球”之类的东西spark_disconnect(sc, tableToRemove = "batting"),但这似乎不可能。

4

2 回答 2

18
dplyr::db_drop_table(sc, "batting")

我试过这个功能,它似乎工作。

于 2016-12-20T10:17:50.013 回答
4

稍低级别的替代方案是

tbl_name <- "batting"
DBI::dbGetQuery(sc, paste("DROP TABLE", tbl_name))
于 2017-10-02T21:01:23.317 回答