我在相应的临时表的使用结束后尝试使用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版本中不起作用。
任何帮助?
答案 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。