22

registertemptable在下面Apache Spark使用Zeppelin

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

4 回答 4

46

火花 2.x

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

spark.catalog.dropTempView("df")

对于全局视图,您可以使用Catalog.dropGlobalTempView

spark.catalog.dropGlobalTempView("df")

如果视图不存在,这两种方法都可以安全调用,并且从 Spark 2.1 开始,返回布尔值,指示操作是否成功。

火花 1.x

您可以使用SQLContext.dropTempTable

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

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

于 2015-09-03T15:24:01.303 回答
11

如果您想删除 zeppelin 上的临时表,请尝试这样。

sqlc.dropTempTable("hvac")

或者

%sql DROP VIEW hvac

您可以从 spark API Docs ( http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.package )获得所需的信息

于 2015-09-03T15:33:48.677 回答
10

在火花的新版本(2.0 和最新版本)中。一个应该使用:createOrReplaceTempView代替registerTempTable(depriated),相应的解除分配方法是:dropTempView

spark.catalog.dropTempView("temp_view_name") //drops the table
于 2016-12-29T06:22:11.280 回答
0

您可以使用 sql drop table/view 语句将其删除,如下所示

spark.sql("drop view hvac");
于 2019-10-12T10:55:25.383 回答