Spark Sql RegisterTempTable und RegisterDataFrameAsTable Unterschied

8

Was ist der Unterschied zwischen registerTempTable und registerDataFrameAsTable Methode in Spark SQL und welche ist besser in welchem ​​Szenario?

    
mandar 24.07.2015, 04:48
quelle

1 Antwort

6

Spark & ​​gt; = 2,1

Es gibt eine neue createGlobalTempView , mit dem sich sitzungsübergreifende Ansichten registrieren lassen:

  

Ihre Lebensdauer ist die Lebensdauer der Spark-Anwendung, d. h. sie wird automatisch gelöscht, wenn die Anwendung beendet wird. Es ist an eine systemkonservierte Datenbank _global_temp gebunden, und wir müssen den qualifizierten Namen verwenden, um eine globale temporäre Ansicht, z. %Code%.

Spark & ​​gt; = 2,0

SELECT * FROM _global_temp.view1 wurde zugunsten von registerTempTable und createTempView mit der vorherigen, die wirft und Ausnahme, wenn die Ansicht bereits existiert.

Spark & ​​lt; 2.0

PySpark

Obwohl es keinen praktischen Unterschied zwischen diesen beiden gibt, gibt es einen Unterschied in der Ausführungsstrategie:

  • createOrReplaceTempView ruft SQLContext.registerDataFrameAsTable Methode im JVM SQL-Kontext
  • auf
  • registerDataFrameAsTable ruft DataFrame.registerTempTable im JVM-Datenframe auf, der registerTempTable method im JVM-SQL-Kontext
  • aufruft

Scala

  • registerDataFrameAsTable ruft DataFrame.registerTempTable method im SQL-Kontext
  • auf
  • registerDataFrameAsTable ist eine private Methode, auf die außerhalb von SQLContext.registerDataFrameAsTable package nicht zugegriffen werden kann.

Um die Dinge einfach zu halten, ist es wahrscheinlich eine gute Idee, auch bei org.apache.spark.sql zu bleiben.

    
zero323 24.07.2015 12:18
quelle