Удаление временных таблиц из Apache SQL Spark
У меня 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")
После того, как я выполнил свои запросы с этой временной таблицей, как ее удалить?
Я проверил все документы, и кажется, что я ничего не получаю.
Любые указания?
Ответы
Ответ 1
Искра 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
и безопасен в использовании, если таблица не существует.
Ответ 2
в новой версии (2.0 и последней) искры.
следует использовать: createOrReplaceTempView
вместо registerTempTable
(лишенный)
и соответствующий метод освобождения: dropTempView
spark.catalog.dropTempView("temp_view_name") //drops the table
Ответ 3
Если вы хотите удалить временную таблицу на zeppelin, попробуйте вот так.
sqlc.dropTempTable("hvac")
или
%sql DROP VIEW hvac
И вы можете получить необходимую информацию из документов API Google Spark (http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.package)
Ответ 4
Вы можете использовать sql drop table/view, чтобы удалить его, как показано ниже
spark.sql("drop view hvac");