2016-12-07 17 views
1

Вы хотите удалить одну таблицу данных из контекста Spark ('sc'). Я знаю, что одна кэшированная таблица может быть не кэширована, но это не то же самое, что удаление объекта из sc - насколько я могу собрать.SparklyR удаление таблицы из контекста Spark

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" 

Чтобы отключить полный СБН, я хотел бы использовать spark_disconnect(sc), но в данном примере это разрушило бы как «титанический» и «ватин» таблицы, хранящиеся внутри СБН.

Скорее, я хотел бы удалить, например, «ватин» с чем-то вроде spark_disconnect(sc, tableToRemove = "batting"), но это не представляется возможным.

ответ

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

Я пробовал эту функцию и, похоже, работает.

+0

Это выглядит прямо ко мне! Отметьте это как правильное, если только кто-то другой не сможет доказать обратное. Даже путем кэширования без раскрепощения, кажется, что таблица удаляется после вызова 'src_tbls (sc)'. Благодаря! – eyeOfTheStorm

0

Альтернативой немного ниже уровня является

tbl_name <- "batting" 
DBI::dbGetQuery(sc, paste("DROP TABLE", tbl_name)) 
Смежные вопросы