SparklyR 从 Spark 上下文中删除表

Posted

技术标签:

【中文标题】SparklyR 从 Spark 上下文中删除表【英文标题】:SparklyR removing a Table from Spark Context 【发布时间】:2017-04-22 20:19:47 【问题描述】:

希望从 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 中的“titanic”和“batting”表。

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

【问题讨论】:

【参考方案1】:
dplyr::db_drop_table(sc, "batting")

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

【讨论】:

这对我来说是正确的!将其标记为正确,除非其他人可以证明并非如此。即使在不取消缓存的情况下进行缓存,在调用src_tbls(sc) 后,表似乎也会被删除。谢谢!【参考方案2】:

略低级的替代方案是

tbl_name <- "batting"
DBI::dbGetQuery(sc, paste("DROP TABLE", tbl_name))

【讨论】:

以上是关于SparklyR 从 Spark 上下文中删除表的主要内容,如果未能解决你的问题,请参考以下文章

dplyr::copy_to 和 sparklyr::sdf_copy_to 有啥区别?

Sparklyr - 在 spark-submit 中更改日志级别

将 sparklyr 连接到远程 spark 连接

将 spark 数据帧转换为 sparklyR 表“tbl_spark”

找出 2 个表 (`tbl_spark`) 是不是相等而不使用 sparklyr 收集它们

为啥 R lubridate::duration 数据类型使用 sparklyr 转换为 spark 中的字符?