从Apache SQL Spark中删除临时表

27

我在使用Zeppelin下使用Apache Spark注册了registertemptable

val hvacText = sc.textFile("...")

case class Hvac(date: String, time: String, targettemp: Integer, actualtemp: Integer, buildingID: String)

val hvac = hvacText.map(s => s.split(",")).filter(s => s(0) != "Date").map(
    s => Hvac(s(0), 
            s(1),
            s(2).toInt,
            s(3).toInt,
            s(6))).toDF()

hvac.registerTempTable("hvac")

我用这个临时表完成查询后,如何将其删除?

我查了所有文档,似乎一无所获。

有什么指导吗?

4个回答

53

Spark 2.x

对于临时视图,您可以使用Catalog.dropTempView

spark.catalog.dropTempView("df")

要查看全局视图,可以使用Catalog.dropGlobalTempView

spark.catalog.dropGlobalTempView("df")

自Spark 2.1版本起,这两种方法都可以安全调用,即使视图不存在也可以,并返回一个布尔值指示操作是否成功。

Spark 1.x

您可以使用SQLContext.dropTempTable

scala.util.Try(sqlContext.dropTempTable("df"))

它仍可用于 Spark 2.0,但将处理委托给 Catalog.dropTempView,如果表不存在,则使用是安全的。


spark.stop()会删除这些临时表吗? - vinayak_narune

13

sqlc.dropTempTable("hvac") 是可行的,而后者不行。非常感谢! - Softwaremaker
DROP VIEW/DROP TABLE的参考文献,使用 %sql:https://docs.databricks.com/spark/latest/spark-sql/language-manual/drop-table.html - Anton Tarasenko

12

在新版本的Spark(2.0和最新版本)中,应该使用createOrReplaceTempView代替registerTempTable(已弃用),相应的方法以释放内存是:dropTempView

spark.catalog.dropTempView("temp_view_name") //drops the table

1
您可以使用 SQL 的 drop table/view 语句来删除它,如下所示。
spark.sql("drop view hvac");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接