2017-06-06 442 views
0

getOrCreate()方法在SparkContext Class中的用法以及我如何使用它?我沒有找到任何合適的例子(編碼明智)。如何在SparkContext類中使用getOrCreate()方法,以及我們通過此方法實現的功能

我的理解是,用上面的方法我可以分享應用程序之間的火花上下文。這裏的應用意味着什麼? 是否將應用程序提交給火花集羣? 如果是這樣,那麼我們應該能夠使用在一個應用程序中註冊的全局變量(廣播)和臨時表到另一個應用程序中?

如有任何人都可以闡述,並就這個合適的例子。

回答

0

如在給定的Javadoc for SparkContext,當應用程序可能希望共享SparkContext getOrCreate()是有用的。所以是的,你可以使用它來跨應用程序共享一個SparkContext對象。是的,您可以重新使用廣播變量和臨時表。

對於理解星火應用程序,請參閱該link。簡而言之,應用程序是Spark中最高級別的計算單位。你提交給火花集羣的不是一份工作,而是一份應用。在Spark應用程序中調用一個動作觸發啓動作業來實現它。

+0

感謝您的答覆。我可以從你的解釋getOrCreate()方法以某種方式創建一個全球性的單上下文,如果getOrCreate()方法是在同一火花羣集上運行不同的應用程序調用我會火花背景下的同一個實例明白了嗎? 如果這是真的,我可以共享在這些應用程序中創建的RDD(全局變量和臨時表)的狀態,因爲火花上下文是相同的?即使這些應用程序在同一個Spark集羣中的不同JVM上運行,我也能實現這一切?我希望我正確理解這一點! – Abhinav

+0

只能在單個JVM(運行Spark驅動程序的JVM)內共享SparkContext。因此,共享SparkContext只發生在同一個驅動程序JVM中運行的應用程序之間。在同一個JVM中,getOrCreate()會給你同樣的SparkContext實例;這將幫助您在由相同Spark Driver生成的不同應用程序之間共享廣播變量等。 – suj1th

+0

現在我明白你想要解釋的是什麼。有沒有關於如何從運行在JVM上的Spark驅動生成不同應用程序的合適示例? 。就好像我嘗試在Spark集羣上運行不同的應用程序一樣,它將始終爲不同的JVM上的每個應用程序運行不同的驅動程序進程。我試圖找到它,但沒有得到任何合適的例子。 – Abhinav

相關問題