2015-09-03 102 views
5

刪除臨時表我有registertemptableApache Spark使用下面ZeppelinApache的SQL星火

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") 

我已經與我的這個臨時表的查詢完成後,我怎麼去除呢?

我檢查了所有的文檔,似乎我無處可去。

任何指導?

回答

15

星火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")) 

它可以在2.0星火仍然可以使用,但委託加工Catalog.dropTempView,是安全的,如果表中不使用存在。

6

在新的版本(2.0和最新的)所需要的信息。 一個應該使用:createOrReplaceTempView代替registerTempTable(depricated) 和解除分配相應的方法是:dropTempView

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