2015-09-03 103 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