Spark 2.3 删除临时表

Aak*_*asu 2 apache-spark apache-spark-sql pyspark pyspark-sql

我正在尝试dropTempTable()在各个临时表的使用结束后使用(以释放内存用于下一次计算)。

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

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

DF.dropTempTable('xyz')
Run Code Online (Sandbox Code Playgroud)

没用。

2) 也尝试了以下方法,因为 spark 在内部sqlContext也与 一起调用sparkContext,但没有用 -

spark.dropTempTable('xyz')
Run Code Online (Sandbox Code Playgroud)

3)试图spark.catalog下降,这也失败了-

spark.catalog.dropTempTable('xyz')
Run Code Online (Sandbox Code Playgroud)

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

有什么帮助吗?

Avi*_*rya 6

对于 spark 2.0,API 是

对于临时视图 spark.catalog.dropTempView("df")

对于全局视图 spark.catalog.dropGlobalTempView("df")

从文档

抽象 def dropGlobalTempView(viewName: String): Boolean

在目录中删除具有给定视图名称的全局临时视图。如果视图之前已经缓存过,那么它也不会被缓存。

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

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

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

抽象 def dropTempView(viewName: String): Boolean

在目录中删除具有给定视图名称的本地临时视图。如果视图之前已经缓存过,那么它也不会被缓存。

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

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

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

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