web-dev-qa-db-de.com

Wie funktioniert createOrReplaceTempView in Spark?

Ich bin neu in Spark und Spark SQL.

Wie funktioniert createOrReplaceTempView in Spark? 

Wenn wir eine RDD von Objekten als Tabelle registrieren, bleiben alle Daten im Speicher erhalten. 

14

createOrReplaceTempView erstellt (oder ersetzt, wenn der Ansichtsname bereits vorhanden ist) eine faul bewertete "Ansicht", die Sie dann wie eine Hive-Tabelle in Spark SQL verwenden können. Not bleibt im Speicher erhalten, es sei denn, Sie speichern das Dataset, das der Ansicht zugrunde liegt. 

scala> val s = Seq(1,2,3).toDF("num")
s: org.Apache.spark.sql.DataFrame = [num: int]

scala> s.createOrReplaceTempView("nums")

scala> spark.table("nums")
res22: org.Apache.spark.sql.DataFrame = [num: int]

scala> spark.table("nums").cache
res23: org.Apache.spark.sql.Dataset[org.Apache.spark.sql.Row] = [num: int]

scala> spark.table("nums").count
res24: Long = 3

Die Daten werden erst nach dem Aufruf .count vollständig zwischengespeichert. Hier ist der Beweis, dass es zwischengespeichert wurde:

 Cached nums temp view/table

Verwandte SO: spark createOrReplaceTempView vs createGlobalTempView

Relevantes Zitat (im Vergleich zur persistenten Tabelle): "Im Gegensatz zum Befehl createOrReplaceTempView wird saveAsTable den Inhalt des DataFrame verwirklichen und einen Zeiger auf die Daten im Hive-Metastore erstellen." aus https://spark.Apache.org/docs/latest/sql-programming-guide.html#saving-to-persistent-tables

Hinweis: createOrReplaceTempView war früher registerTempTable

29
Garren S

CreateOrReplaceTempView erstellt eine temporäre Ansicht der Tabelle im Arbeitsspeicher, die derzeit nicht vorherrschend ist. Sie können jedoch zusätzlich SQL-Abfrage ausführen. Wenn Sie es speichern möchten, können Sie entweder speichern oder saveAsTable zum Speichern verwenden.

zuerst lesen wir Daten im CSV-Format und konvertieren sie in Datenrahmen und erstellen eine temporäre Ansicht

Daten im CSV-Format lesen

val data = spark.read.format("csv").option("header","true").option("inferSchema","true").load("FileStore/tables/pzufk5ib1500654887654/campaign.csv")

drucken des Schemas

data.printSchema

 SchemaOfTable

data.createOrReplaceTempView("Data")

Jetzt können wir SQL-Abfragen auf der gerade erstellten Tabellenansicht ausführen

  %sql select Week as Date,Campaign Type,Engagements,Country from Data order     by Date asc

 enter image description here

6
RajenJangam

SparkSQl unterstützt das Schreiben von Programmen unter Verwendung der Dataset- und Dataframe-API sowie die Unterstützung von SQL.

Um Sql für DataFrames zu unterstützen, ist zunächst eine Tabellendefinition mit Spaltennamen erforderlich. Wenn der Hive-Metastore Tabellen erstellt, erhält er viele unnötige Tabellen, da sich Spark-Sql nativ auf Hive befindet. Es wird also eine temporäre Ansicht erstellt, die vorübergehend in Hive verfügbar ist und für jede andere Hive-Tabelle verwendet wird, sobald der Spark-Kontext angehalten wird.

Um die Ansicht zu erstellen, benötigen Entwickler ein Dienstprogramm namenscreateOrReplaceTempView

0