首页 文章

Spark 2.3 Dropping Temp Table [复制]

提问于
浏览
0

这个问题在这里已有答案:

我试图在相应的临时表的使用结束后使用 dropTempTable() (为了下一次计算释放内存) .

较新的Spark会话不需要 sqlContext ,因此,我对如何使用该功能感到困惑 .

1)尝试,我用来注册临时表的DF相同 -

DF.dropTempTable('xyz')

没工作 .

2)也尝试了以下方式,因为spark内部也调用 sqlContextsparkContext ,但是没有用 -

spark.dropTempTable('xyz')

3)试图放弃 spark.catalog ,这也失败了 -

spark.catalog.dropTempTable('xyz')

该怎么办?互联网上的1.6示例在 dropTempTable() 的2.3版本中不起作用 .

有帮助吗?

1 回答

  • 0

    对于spark 2.0,API是

    For temporary views spark.catalog.dropTempView("df")

    For global views spark.catalog.dropGlobalTempView("df")

    来自文档

    abstract def dropGlobalTempView(viewName: String): Boolean

    使用目录中的给定视图名称删除全局临时视图 . 如果视图之前已被缓存,那么它也将被缓存 .

    全局临时视图是跨会话 . 它的生命周期是Spark应用程序的生命周期,即它将在应用程序终止时自动删除 . 它绑定到系统保留的数据库global_temp,我们必须使用限定名称来引用全局临时视图,例如SELECT * FROM global_temp.view1 .

    viewName要删除的临时视图的非限定名称 .

    如果视图成功删除,则返回true,否则返回false .

    abstract def dropTempView(viewName: String): Boolean

    使用目录中的给定视图名称删除本地临时视图 . 如果视图之前已被缓存,那么它也将被缓存 .

    本地临时视图是会话范围的 . 它的生命周期是创建它的会话的生命周期,即它会在会话终止时自动删除 . 它不依赖于任何数据库,即我们不能使用db1.view1来引用本地临时视图 .

    请注意,此方法的返回类型是Spark 2.0中的Unit,但在Spark 2.1中更改为Boolean .

    viewName要删除的临时视图的名称 .

    如果视图成功删除,则返回true,否则返回false .

相关问题