2017-03-13 84 views
4

Spark數據集2.0提供了兩個函數createOrReplaceTempViewcreateGlobalTempView。我無法理解這兩個函數之間的基本區別。spark createOrReplaceTempView vs createGlobalTempView

根據API documents

createOrReplaceTempView:此 臨時視圖的壽命是聯繫在一起的,使用[[SparkSession]]爲創建該數據集。
所以,當我打電話sparkSession.close()定義將被銷燬。這是真的嗎?

createGlobalTempView:此臨時視圖的生命週期與此Spark應用程序相關聯。

當這種類型的視圖將被銷燬?任何例子。像sparkSession.close()?

回答

9
df.createOrReplaceTempView("tempViewName") 
df.createGlobalTempView("tempViewName") 

createOrReplaceTempView()使用此數據框df創建或替換本地臨時視圖。這種觀點的終身依賴於SparkSession類,是要刪除這樣的觀點:

spark.catalog.dropTempView("tempViewName") 

stop()將關閉會話

self.ss = SparkSession(sc) 
... 
self.ss.stop() 

createGlobalTempView()創建與此數據幀DF全局臨時視圖。這個觀點的生命時間依賴於激發應用程序本身。 如果你想刪除:根據我的理解,當你調用這兩個類型的視圖將被銷燬

spark.catalog.dropGlobalTempView("tempViewName") 

stop()將關閉

ss = SparkContext(conf=conf, ......) 
... 
ss.stop() 
+0

'sparkContext.stop()'。應用程序關閉在哪裏? –

+0

SparkSession類需要一個SparkContext對象,如果sparkContext停止,它們都將被銷燬。如果您不調用stop()方法,則您的應用程序可能會掛起。您不需要SparkSession或SparkContext對象,然後停止它們。因此,Spark主節點會意識到您的應用程序不會消耗或使用以及cpu或資源。 請參閱:http://apache-spark-user-list.1001560.n3.nabble.com/SparkContext-stop-td17826.html –

+0

只需添加到令人敬畏的答案:Spark會話與PreSpot2.0中的sqlContext等效時代。 – bigdatamann