本文介绍了从 Apache SQL Spark 中删除临时表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Apache Spark 中有 registertemptable,使用下面的 Zeppelin:

I have registertemptable in Apache Spark using Zeppelin below:

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

完成对这个临时表的查询后,如何删除它?

After I have done with my queries with this temp table, how do I remove it ?

我检查了所有文档,但似乎一无所获.

I checked all docs and it seems I am getting nowhere.

有什么指导吗?

推荐答案

Spark 2.x

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

For temporary views you can use Catalog.dropTempView:

spark.catalog.dropTempView("df")

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

For global views you can use Catalog.dropGlobalTempView:

spark.catalog.dropGlobalTempView("df")

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

Both methods are safe to call if view doesn't exist and, since Spark 2.1, return boolean indicating if the operation succeed.

Spark 1.x

您可以使用 SQLContext.dropTempTable:

You can use SQLContext.dropTempTable:

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

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

It can be still used in Spark 2.0, but delegates processing to Catalog.dropTempView and is safe to use if table doesn't exist.

这篇关于从 Apache SQL Spark 中删除临时表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 08:46