2015-11-08 30 views
2

我爲scala配置了eclipse,並創建了一個maven項目並在windows上編寫了一個簡單的字數spark工作。現在我的spark + hadoop安裝在linux服務器上。我怎樣才能啓動我的火花代碼從Eclipse到火花集羣(這是在Linux上)?在eclipse上運行火花代碼,並在另一臺服務器上安裝火花

任何建議。

+0

建議,使用IntelliJIdea,我個人認爲它是'scala'和'java'的最佳IDE。 –

+0

是的..但是我的問題是如何在集羣上運行我的代碼。讓我們說如果使用intellijide,那我該怎麼做呢? – Shashi

+0

你的主人在哪裏?你使用'Mesos','紗線'還是其他? –

回答

-2

你在找什麼是創建SparkContext的主人。

您需要將您的主設備設置爲要使用的集羣。

我邀請您閱讀「Spark編程指南」或按照介紹性課程瞭解這些基本概念。 Spark不是您可以在一夜之間開始工作的工具,它需要一些時間。

http://spark.apache.org/docs/latest/programming-guide.html#initializing-spark

+0

這是一個相當低質量的答案:OP涉及一個困難而微妙的主題(即使是火花貢獻者也在爲之奮鬥)。你的答案*甚至不超過火花上30分鐘教程的水平。請在發佈之前瞭解問題。 – javadba

1

其實這個答案並非如此簡單,你所期望的。

我會做很多假設,首先您使用sbt,第二個是,你是在一個基於Linux的計算機工作,第三是最後的是,你有兩個classes在你的項目,讓我們說RunMeGlobals,以及最後的假設是你想要在程序中設置設置。因此,地方在你的可運行的代碼,你必須有這樣的事情:

object RunMe { 
    def main(args: Array[String]) { 
    val conf = new SparkConf() 
     .setMaster("mesos://master:5050") //If you use Mesos, and if your network resolves the hostname master to its IP. 
     .setAppName("my-app") 
     .set("spark.executor.memory", "10g") 
    val sc = new SparkContext(conf) 
    val sqlContext = new SQLContext() 

    //your code comes here 
    } 
} 

必須遵循的步驟如下:

  • 編譯工程,在它的根,通過使用:

    $ sbt assembly

  • 將作業發送到主節點,這是最有趣的部分(假設你有一個結構在您的項目target/scala/,並且在你裏面有一個文件.jar,對應於編譯的項目)

    $ spark-submit --class RunMe target/scala/app.jar

注意,因爲我認爲該項目有兩個或多個類,你將不得不找出哪一個類你想跑步。此外,我敢打賭,這兩種方法,對於YarnMesos都非常相似。

+1

嗨如果我沒有錯,那麼我上面的方法,我將不得不打包我的代碼,並將不得不將其傳遞給服務器,然後我可以運行spark-submit --class RunMe target/scala/app.jar。但我一直在尋找可以直接從IDE運行我的代碼而不是將其傳輸到服務器的東西。 – Shashi

+0

當您運行'spark-submit'時,您不必傳輸它,它將讀取執行類的代碼,並且如果將主設置爲'SparkConf'對象,它將「發送」作業'。 –

+0

@AlbertoBonsanto正如你所說,使用'sbt assembly'並用'spark-submit'提交一個作業,但是我可以'設置JAR'並且在IntelliJ IDEA中'右鍵單擊並運行',這兩種方式有什麼不同? ?另一個類似的問題[這裏](http://stackoverflow.com/questions/33607220/how-intellij-idea-submit-code-to-remote-spark-cluster?noredirect=1#comment55001640_33607220)當我使用'sbt程序集'捻一包,然後用'spark-submit'提交我還有別的東西,你能幫我解決嗎? – xring