爲了讓Scala運行起來還是很麻煩,爲了大家方便,還是記錄下來:
1、首先我下載的是IDEA的社區版本,版本號爲15.
2、下載安裝scala插件:
2.1 進入設置菜單。
2.2 點擊安裝JetBrains plugin
2.3 輸入scala查詢插件,點擊安裝
說明:我的IDEA已經安裝,所以這裏面沒有顯示出來安裝按鈕,否則右邊有顯示綠色按鈕。
3、新建Scala工程
3.1 新建工程
通過菜單:File----》New Project 選擇Scala工程。
並且設置項目基本信息,如下圖:
3.2 設置Modules
1)點擊右上角的方塊:
2)在左邊選擇Libraries---》+---》Scala SDK--》選擇版本爲2.10.4
說明:如果不存在這個版本可以通過左下角的download去下載。
3)選擇添加Java的Jar文件,選擇Spark和Hadoop關聯的Jar
我這裏添加的是:spark-assembly-1.6.1-hadoop2.6.0.jar 這個是spark安裝時候自帶的lib裏面有,很大。
定位到jar所在的目錄後,刷新,選擇這個文件,點擊OK,會花費比較長時間建索引。
4)在Src源碼目錄新建文件:WordCount.scala
且輸入如下代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import org.apache.spark.{SparkConf,
SparkContext} import org.apache.spark.SparkContext. _ object WordCount
{ def main(args : Array[String])
{ if (args.length
< 1 )
{ System.err.println( "Usage:<File>" ) System.exit( 1 ) } val conf = new SparkConf().setAppName( "WordCount" ) val sc = new SparkContext(conf) val line = sc.textFile(args( 0 )) val words = line.flatMap( _ .split( "" )).map(( _ , 1 )) val reducewords = words.reduceByKey( _ + _ ).collect().foreach(println) sc.stop() } } |
5)編譯運行:
需要輸入參數,所以要設置下相關參數信息:
隨便複製個文件過去,然後設置下:
- 拋出異常:
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
at org.apache.spark.SparkContext.<init>(SparkContext.scala:401)
解決辦法:需要設置下SparkContext的地址:
- 拋出異常:
16/06/25 12:14:18 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
解決辦法:
http://stackoverflow.com/questions/19620642/failed-to-locate-the-winutils-binary-in-the-hadoop-binary-path
可能是因爲我沒有安裝hadoop的原因,設置下相關信息就可以:
下載:
<a href="http://www.srccodes.com/p/article/39/error-util-shell-failed-locate-winutils-binary-hadoop-binary-path">Click here</a>
設置:HADOOP_HOME爲下載後解壓內容的上級目錄,然後在PATH裏面添加%HADOOP_HOME%/bin;
4、其他異常
1)異常內容:類或Object XXX已經被定義
解決辦法: 這個可能是工程裏面設置了兩個source目錄,需要刪除一個。
2)異常內容:sparkContext.class 依賴不存在
解決辦法:需要引入hadoop的jar包,我這裏是:spark-assembly-1.6.1-hadoop2.6.0.jar
3)異常內容:Error:(17, 29) value reduceByKey is not a member of org.apache.spark.rdd.RDD[(String, Int)]
解決辦法: 導入這個: import org.apache.spark.SparkContext._
4)異常內容:Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/util/concurrent/ThreadFactoryBuilder
解決辦法:添加依賴Jar :guava-11.0.2.jar
5)異常內容:Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;
解決辦法:更改scala-sdk版本爲2.10,如果沒有通過如下方式下載:(速度奇慢)
5、打包成Jar
1、設置下導出Jar信息:
2、設置導出的工程還導出的Main類:
3、通過選擇點擊-號刪除其他依賴的class
4、導出Jar包:
5、上傳後執行Jar包
./spark-submit --master spark://inas:7077 --class WordCount --executor-memory 512m /home/hadoop/sparkapp/scalatest4.jar hdfs://inas:9000/user/hadoop/input/core-site.xml
說明: hadoop文件爲以前新建的,在提交之前需要先啓動hadoop再自動spark,然後再用以上辦法提交。
啓動Hdfs: ./start-dfs.sh
啓動spark:./sbin/start-all.sh(沒試過)
可以通過如下方法啓動:
~/project/spark-1.3.0-bin-hadoop2.4 $./sbin/start-master.sh
~/project/spark-1.3.0-bin-hadoop2.4 $./bin/spark-class org.apache.spark.deploy.worker.Worker spark://inas:7077
注意:必須使用主機名
啓動模式爲standaline模式。
Spark Standalone Mode 多機啓動,則其他主機作爲worker啓動,設置master主題。
原文鏈接:http://www.cnblogs.com/seaspring/p/5615976.html
作者:明翼(XGogo)
出處:http://www.cnblogs.com/seaspring/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。