2017-03-13 47 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