SparklyR 从 Spark 上下文中删除一个 tbl
SparklyR removing a tbl from Spark Context
类似于:,但不同之处在于:
上面的问题问的是如何从spark中移除一个"table",这里是由copy_to
函数创建的。如果改为使用 spark_read_csv()
函数,则 class.
中似乎存在差异
my_csv <- spark_read_csv("name", sc)
db_drop_table(my_table)
returns:
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 数据类型的选择。
因此,如何在不退出整个会话的情况下从 memory/session 中删除特定的 tbl
并且只删除 tbl
?
奖励:RStudio Server 界面中是否有我错过的按钮可以为我执行此过程?我在 spark 连接选项卡中看不到执行此操作的明显方法。
一般sparklyr
:
- 创建临时视图 - 这只是在 Metastore 中创建相应的条目但不占用任何资源
- 默认情况下急切缓存数据(reader 的
memory
参数设置为 TRUE
)。
您可以使用 dropView
方法从 Metastore 中删除表:
sc %>% spark_session() %>% invoke("catalog") %>%
invoke("dropTempView", "my_table")
或使用clearCache
方法清除缓存:
sc %>% spark_session() %>% invoke("catalog") %>%
invoke("clearCache")
除非您担心名称冲突,否则您应该关注第二个,尽管我建议避免急切缓存,除非绝对必要。
您可以使用 DBI
包来解决这个问题。
library("DBI")
dbGetQuery(sc,"drop table if exists my_table")
类似于:
上面的问题问的是如何从spark中移除一个"table",这里是由copy_to
函数创建的。如果改为使用 spark_read_csv()
函数,则 class.
my_csv <- spark_read_csv("name", sc)
db_drop_table(my_table)
returns:
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 数据类型的选择。
因此,如何在不退出整个会话的情况下从 memory/session 中删除特定的 tbl
并且只删除 tbl
?
奖励:RStudio Server 界面中是否有我错过的按钮可以为我执行此过程?我在 spark 连接选项卡中看不到执行此操作的明显方法。
一般sparklyr
:
- 创建临时视图 - 这只是在 Metastore 中创建相应的条目但不占用任何资源
- 默认情况下急切缓存数据(reader 的
memory
参数设置为TRUE
)。
您可以使用 dropView
方法从 Metastore 中删除表:
sc %>% spark_session() %>% invoke("catalog") %>%
invoke("dropTempView", "my_table")
或使用clearCache
方法清除缓存:
sc %>% spark_session() %>% invoke("catalog") %>%
invoke("clearCache")
除非您担心名称冲突,否则您应该关注第二个,尽管我建议避免急切缓存,除非绝对必要。
您可以使用 DBI
包来解决这个问题。
library("DBI")
dbGetQuery(sc,"drop table if exists my_table")