web-dev-qa-db-fra.com

Supprimer les tables temporaires d'Apache SQL Spark

J'ai registertemptable dans Apache Spark en utilisant Zeppelin ci-dessous:

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

Après avoir terminé mes requêtes avec cette table temporaire, comment la supprimer?

J'ai vérifié tous les documents et il semble que je ne sois nulle part.

Des conseils?

18
Softwaremaker

Spark 2.x

Pour les vues temporaires, vous pouvez utiliser Catalog.dropTempView :

spark.catalog.dropTempView("df")

Pour les vues globales, vous pouvez utiliser Catalog.dropGlobalTempView :

spark.catalog.dropGlobalTempView("df")

Les deux méthodes peuvent être appelées en toute sécurité si la vue n'existe pas et, depuis Spark 2.1, retourne un booléen indiquant si l'opération réussit.

Spark 1.x

Vous pouvez utiliser SQLContext.dropTempTable :

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

Il peut toujours être utilisé dans Spark 2.0, mais délègue le traitement à Catalog.dropTempView et est sûr à utiliser si la table n'existe pas.

29
zero323

dans le nouveau ver (2.0 et dernier) de spark. il faut utiliser: createOrReplaceTempView à la place de registerTempTable (obsolète) et la méthode correspondante pour désallouer est: dropTempView

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

Si vous souhaitez supprimer votre table temporaire sur zeppelin, essayez comme ceci.

sqlc.dropTempTable("hvac")

ou

%sql DROP VIEW hvac

Et vous pouvez obtenir les informations dont vous avez besoin depuis spark API Docs ( http://spark.Apache.org/docs/latest/api/scala/index.html#org). Apache.spark.package )