Spark 2.3 Dropping Temp Table

时间:2018-05-26 15:30:17

标签: apache-spark pyspark apache-spark-sql pyspark-sql

我在相应的临时表的使用结束后尝试使用dropTempTable()(以释放内存以进行下一次计算)。

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

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

DF.dropTempTable('xyz')

没有工作。

2)也尝试了以下方式,因为内部的火花与sqlContext一起调用sparkContext,但是没有工作 -

spark.dropTempTable('xyz')

3)尝试删除spark.catalog,这也失败了 -

spark.catalog.dropTempTable('xyz')

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

任何帮助?

1 个答案:

答案 0 :(得分:1)

对于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。