2017-08-07 64 views
0

类似TBL:SparklyR removing a Table from Spark Context,但不同的,因为:SparklyR去除星火语境

上述问题询问如何从火花删除“表”,这里由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,哈德利的数据类型。

因此,如何在不退出完整会话的情况下从内存/会话中删除特定的tbl并且仅删除tbl

奖励:RStudio服务器界面中是否有按钮,我错过了将为我执行此过程?我看不到明显的方式在火花连接选项卡中执行此操作。

回答

2

一般sparklyr

  • 创建临时的观点 - 这只是创建相应的条目在metastore,但不占用任何资源
  • 默认情况下,急切地缓存数据(读者memory参数设置为TRUE)。

您可以从metastore使用dropView方法删除表:

sc %>% spark_session() %>% invoke("catalog") %>% 
    invoke("dropTempView", "my_table") 

clearCache方法清除缓存:

sc %>% spark_session() %>% invoke("catalog") %>% 
    invoke("clearCache") 

除非你担心名字冲突,你可能应该集中在第二个,虽然我建议避免急切的缓存,除非它是绝对必要的。

+1

2为2,非常感谢。如果不是很明显,我只是从所有的火花东西开始,能否简单地扩展两者之间的差异? – DaveRGP