2017-05-16 41 views

Odpowiedz

11

createOrReplaceTempView tworzy (lub zastępuje, jeśli nazwa tego widoku już istnieje) leniwie oceniony "widok", który można następnie użyć jak tabeli ula w Spark SQL. Nie ma ona wartości , a nie, dopóki pamięć podręczna nie zostanie zapisana w widoku.

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 

Dane są buforowane w pełni dopiero po wywołaniu .count. Oto dowód, że został buforowane:

Cached nums temp view/table

Podobne SO: spark createOrReplaceTempView vs createGlobalTempView

Stosowna cytat (w porównaniu do uporczywego tabeli): „W przeciwieństwie do polecenia createOrReplaceTempView, saveAsTable zmaterializuje zawartości DataFrame i utworzyć wskaźnik do danych w metastorze Hive. " z https://spark.apache.org/docs/latest/sql-programming-guide.html#saving-to-persistent-tables

Uwaga: createOrReplaceTempView dawniej registerTempTable

+0

Czy to 'view' tworzenia tabeli tymczasowej? I czy "widok" ma jakąś konkretną nazwę w Spar jak tablica ula? –

+0

Tak, jest to praktycznie tabela, z tym wyjątkiem, że musi zostać oszacowana, ponieważ nie została zmaterializowana do plików. Możesz użyć widoku tak, jak zrobiłbyś tabelę ula (na przykład w surowym zapytaniu SQL). – Garren

+0

W przeciwieństwie do tradycyjnego stołu tymczasowego, widok temp nie jest w ogóle zmaterializowany, nawet w pamięci. Przydaje się do uzyskiwania dostępu do danych w SQL, ale rozumie, że jego stwierdzenia muszą być oceniane KAŻDY czas, w którym jest on dostępny – Garren

3

CreateOrReplaceTempView utworzy tymczasowy widok tabeli na pamięć nie jest presistant w tej chwili, ale można uruchomić sql zapytanie na początku tego. jeśli chcesz go zapisać, możesz kontynuować lub użyć saveAsTable do zapisania.

najpierw odczytać dane w formacie CSV, a następnie przekonwertować do ramki danych i utworzyć widok Temp

Odczyt danych w formacie CSV

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

drukowanie schematu

data.printSchema

SchemaOfTable

data.createOrReplaceTempView("Data") 

Teraz możemy uruchomić sql zapytania na wierzchu widok tabeli po prostu stworzony

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

enter image description here