类似于:SparklyR removing a Table from Spark Context,但因为:
以上问题询问如何从火花中删除“表格”,此处由copy_to
函数创建。如果使用spark_read_csv()
函数,则表明类中存在差异。
my_csv <- spark_read_csv("name", sc)
db_drop_table(my_table)
返回:
Error in UseMethod("db_drop_table") :
no applicable method for 'db_drop_table' applied to an object of class "c('tbl_spark', 'tbl_sql', 'tbl_lazy', 'tbl')"
这进一步表明此处创建的对象不是table
而是tbl
,Hadleys数据类型的选择。
因此,如何在不退出整个会话的情况下从内存/会话中删除特定tbl
且仅删除tbl
?
Bonus:RStudio Server界面中是否有一个我错过的按钮会为我执行此过程?我无法在火花连接选项卡中以明显的方式看到这一点。
答案 0 :(得分:3)
一般来说sparklyr
:
memory
参数设置为TRUE
)。您可以使用dropView
方法从Metastore中删除表格:
sc %>% spark_session() %>% invoke("catalog") %>%
invoke("dropTempView", "my_table")
或使用clearCache
方法清除缓存:
sc %>% spark_session() %>% invoke("catalog") %>%
invoke("clearCache")
除非你担心名字冲突,否则你应该把重点放在第二个,尽管我建议避免急切的缓存,除非绝对必要。
答案 1 :(得分:0)
您可以使用DBI包来解决问题。
library("DBI")
dbGetquery(sc,"drop table if exists my_table")