【问题标题】:SparklyR removing a tbl from Spark ContextSparklyR 从 Spark 上下文中删除一个 tbl
【发布时间】:2018-01-14 19:05:04
【问题描述】:

类似于:SparklyR removing a Table from Spark Context,但不同的原因是:

上述问题询问如何从 spark 中删除“表”,这里由 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

奖励:RStudio Server 界面中是否有一个我错过的按钮可以为我执行此过程?我在 spark 连接选项卡中看不到明显的方法。

【问题讨论】:

    标签: r apache-spark rstudio sparklyr


    【解决方案1】:

    一般sparklyr:

    • 创建临时视图 - 这只是在元存储中创建相应的条目,但不占用任何资源
    • 默认情况下快速缓存数据(阅读器的memory 参数设置为TRUE)。

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

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

    或使用clearCache 方法清除缓存:

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

    除非您担心名称冲突,否则您可能应该关注第二个,尽管我建议避免急切缓存,除非绝对必要。

    【讨论】:

    • 2 换 2,非常感谢。如果不是很明显,我只是从所有火花的东西开始,你能简单地说一下两者之间的区别吗?
    【解决方案2】:

    您可以使用DBI 包来解决此问题。

    library("DBI")
    dbGetQuery(sc,"drop table if exists my_table")
    

    【讨论】:

      猜你喜欢
      • 2017-04-22
      • 2018-10-26
      • 2023-03-23
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2020-06-03
      • 1970-01-01
      相关资源
      最近更新 更多