中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用Eclipse構建Spark集成開發環境

發布時間:2021-11-17 14:57:15 來源:億速云 閱讀:162 作者:柒染 欄目:web開發

如何利用Eclipse構建Spark集成開發環境,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

使用Maven編譯生成可直接運行在Hadoop 2.2.0上的Spark jar包,在此基礎上,介紹如何利用Eclipse構建Spark集成開發環境。

(1) 準備工作

在正式介紹之前,先要以下軟硬件準備:

軟件準備:

Eclipse Juno版本(4.2版本),可以直接點擊這里下載:Eclipse 4.2

Scala 2.9.3版本,Window安裝程序可以直接點擊這里下載:Scala 2.9.3

Eclipse Scala IDE插件,可直接點擊這里下載:Scala IDE(for Scala 2.9.x and Eclipse Juno)

硬件準備

裝有Linux或者Windows操作系統的機器一臺

(2) 構建Spark集成開發環境

我是在windows操作系統下操作的,流程如下:

步驟1:安裝scala 2.9.3:直接點擊安裝即可。

步驟2:將Eclipse Scala IDE插件中features和plugins兩個目錄下的所有文件拷貝到Eclipse解壓后對應的目錄中

步驟3:重新啟動Eclipse,點擊eclipse右上角方框按鈕,如下圖所示,展開后,點擊“Other….”,查看是否有“Scala”一項,有的話,直接點擊打開,否則進行步驟4操作。

如何利用Eclipse構建Spark集成開發環境

步驟4:在Eclipse中,依次選擇“Help” –> “Install New Software…”,在打開的卡里填入http://download.scala-ide.org/sdk/e38/scala29/stable/site,并按回車鍵,可看到以下內容,選擇前兩項進行安裝即可。(由于步驟3已經將jar包拷貝到eclipse中,安裝很快,只是疏通一下)安裝完后,重復操作一遍步驟3便可。

如何利用Eclipse構建Spark集成開發環境

(3) 使用Scala語言開發Spark程序

在eclipse中,依次選擇“File” –>“New” –> “Other…” –>  “Scala Wizard” –> “Scala Project”,創建一個Scala工程,并命名為“SparkScala”。

右擊“SaprkScala”工程,選擇“Properties”,在彈出的框中,按照下圖所示,依次選擇“Java Build Path” –>“Libraties” –>“Add External JARs…”,導入文章“Apache Spark:將Spark部署到Hadoop 2.2.0上”中給出的

assembly/target/scala-2.9.3/目錄下的spark-assembly-0.8.1-incubating- hadoop2.2.0.jar,這個jar包也可以自己編譯spark生成,放在spark目錄下的assembly/target/scala- 2.9.3/目錄中。

如何利用Eclipse構建Spark集成開發環境

跟創建Scala工程類似,在工程中增加一個Scala Class,命名為:WordCount,整個工程結構如下:

如何利用Eclipse構建Spark集成開發環境

WordCount就是最經典的詞頻統計程序,它將統計輸入目錄中所有單詞出現的總次數,Scala代碼如下:

import org.apache.spark._ import SparkContext._ object WordCount {   def main(args: Array[String]) {     if (args.length != 3 ){       println("usage is org.test.WordCount <master> <input> <output>")       return     }     val sc = new SparkContext(args(0), "WordCount",     System.getenv("SPARK_HOME"), Seq(System.getenv("SPARK_TEST_JAR")))     val textFile = sc.textFile(args(1))     val result = textFile.flatMap(line => line.split("\\s+"))         .map(word => (word, 1)).reduceByKey(_ + _)     result.saveAsTextFile(args(2))   } }

在Scala工程中,右擊“WordCount.scala”,選擇“Export”,并在彈出框中選擇“Java” &ndash;> “JAR  File”,進而將該程序編譯成jar包,可以起名為“spark-wordcount-in-scala.jar”,我導出的jar包下載地址是 spark-wordcount-in-scala.jar。

該WordCount程序接收三個參數,分別是master位置,HDFS輸入目錄和HDFS輸出目錄,為此,可編寫run_spark_wordcount.sh腳本:

# 配置成YARN配置文件存放目錄

export YARN_CONF_DIR=/opt/hadoop/yarn-client/etc/hadoop/

SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \

./spark-class org.apache.spark.deploy.yarn.Client \

&ndash;jar spark-wordcount-in-scala.jar \

&ndash;class WordCount \

&ndash;args yarn-standalone \

&ndash;args hdfs://hadoop-test/tmp/input \

&ndash;args hdfs:/hadoop-test/tmp/output \

&ndash;num-workers 1 \

&ndash;master-memory 2g \

&ndash;worker-memory 2g \

&ndash;worker-cores 2

需要注意以下幾點:WordCount程序的輸入參數通過“-args”指定,每個參數依次單獨指定,第二個參數是HDFS上的輸入目錄,需要事先創建好,并上傳幾個文本文件,以便統計詞頻,第三個參數是HDFS上的輸出目錄,動態創建,運行前不能存在。

直接運行run_spark_wordcount.sh腳本即可得到運算結果。

在運行過程中,發現一個bug,org.apache.spark.deploy.yarn.Client有一個參數“&ndash;name”可以指定應用程序名稱:

如何利用Eclipse構建Spark集成開發環境

但是使用過程中,該參數會阻塞應用程序,查看源代碼發現原來是個bug,該Bug已提交到Spark jira上:

// 位置:new-yarn/src/main/scala/org/apache/spark/deploy/yarn/ClientArguments.scala         case ("--queue") :: value :: tail =>           amQueue = value           args = tail           case ("--name") :: value :: tail =>           appName = value           args = tail //漏了這行代碼,導致程序阻塞           case ("--addJars") :: value :: tail =>           addJars = value           args = tail

因此,大家先不要使用“&ndash;name”這個參數,或者修復這個bug,重新編譯Spark。

(4) 使用Java語言開發Spark程序

方法跟普通的Java程序開發一樣,只要將Spark開發程序包spark-assembly-0.8.1-incubating-hadoop2.2.0.jar作為三方依賴庫即可。

(5) 總結

初步試用Spark On YARN過程中,發現問題還是非常多,使用起來非常不方便,門檻還是很高,遠不如Spark On Mesos成熟。

看完上述內容,你們掌握如何利用Eclipse構建Spark集成開發環境的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

剑河县| 昌乐县| 米易县| 石狮市| 尤溪县| 北票市| 布拖县| 蒙城县| 喀什市| 石狮市| 玉屏| 河津市| 武鸣县| 巴彦淖尔市| 兴安县| 元江| 安泽县| 密山市| 南召县| 织金县| 玉溪市| 江达县| 镇雄县| 普安县| 靖西县| 砀山县| 济源市| 泰来县| 元江| 乐昌市| 汕头市| 新野县| 朝阳市| 南溪县| 濉溪县| 渝北区| 贞丰县| 广宗县| 江油市| 乌拉特前旗| 廊坊市|