我爲scala配置了eclipse,並創建了一個maven項目並在windows上編寫了一個簡單的字數spark工作。現在我的spark + hadoop安裝在linux服務器上。我怎樣才能啓動我的火花代碼從Eclipse到火花集羣(這是在Linux上)?在eclipse上運行火花代碼,並在另一臺服務器上安裝火花
任何建議。
我爲scala配置了eclipse,並創建了一個maven項目並在windows上編寫了一個簡單的字數spark工作。現在我的spark + hadoop安裝在linux服務器上。我怎樣才能啓動我的火花代碼從Eclipse到火花集羣(這是在Linux上)?在eclipse上運行火花代碼,並在另一臺服務器上安裝火花
任何建議。
你在找什麼是創建SparkContext的主人。
您需要將您的主設備設置爲要使用的集羣。
我邀請您閱讀「Spark編程指南」或按照介紹性課程瞭解這些基本概念。 Spark不是您可以在一夜之間開始工作的工具,它需要一些時間。
http://spark.apache.org/docs/latest/programming-guide.html#initializing-spark
這是一個相當低質量的答案:OP涉及一個困難而微妙的主題(即使是火花貢獻者也在爲之奮鬥)。你的答案*甚至不超過火花上30分鐘教程的水平。請在發佈之前瞭解問題。 – javadba
其實這個答案並非如此簡單,你所期望的。
我會做很多假設,首先您使用sbt
,第二個是,你是在一個基於Linux的計算機工作,第三是最後的是,你有兩個classes
在你的項目,讓我們說RunMe
和Globals
,以及最後的假設是你想要在程序中設置設置。因此,地方在你的可運行的代碼,你必須有這樣的事情:
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
注意,因爲我認爲該項目有兩個或多個類,你將不得不找出哪一個類你想跑步。此外,我敢打賭,這兩種方法,對於Yarn
和Mesos
都非常相似。
嗨如果我沒有錯,那麼我上面的方法,我將不得不打包我的代碼,並將不得不將其傳遞給服務器,然後我可以運行spark-submit --class RunMe target/scala/app.jar。但我一直在尋找可以直接從IDE運行我的代碼而不是將其傳輸到服務器的東西。 – Shashi
當您運行'spark-submit'時,您不必傳輸它,它將讀取執行類的代碼,並且如果將主設置爲'SparkConf'對象,它將「發送」作業'。 –
@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
建議,使用IntelliJIdea,我個人認爲它是'scala'和'java'的最佳IDE。 –
是的..但是我的問題是如何在集羣上運行我的代碼。讓我們說如果使用intellijide,那我該怎麼做呢? – Shashi
你的主人在哪裏?你使用'Mesos','紗線'還是其他? –