一、 環境配置html
a) java環境配置:java
JDK版本爲1.7,64位;python
環境變量配置以下:c++
JAVA_HOME爲JDK安裝路徑,例如D:\software\workSoftware\JAVAsql
在path中添加「%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;」apache
在CLASSPATH中添加「.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;」eclipse
b) scala環境配置編輯器
scala版本爲2.10,由於Spark 1.6.0用的是這個版本;oop
SCALA_HOME爲scala安裝路徑,例如D:\software\workSoftware\Scala測試
在path中添加「%scala_Home%\bin;%scala_Home%\jre\bin;」
在CLASSPATH中添加「.;%scala_Home%\bin;%scala_Home%\lib\dt.jar;%scala_Home%\lib\tools.jar.;」
c) Hadoop下載和配置
Hadoop版本爲2.6.0 or upper,個人是2.6.3
下載地址:http://apache.fayea.com/hadoop/common/hadoop-2.6.3/hadoop-2.6.3.tar.gz
下載後解壓
另下載一個:winutils.exe,這個百度既有;
下載後,把winutils.exe放在bin目錄下;
配置 HADOOP_HOME,爲解壓地址,例如:「D:\software\workSoftware\hadoop-2.6.3」
在path中添加「「%HADOOP_HOME\bin%;」
d) Spark下載和配置
下載頁面:http://spark.apache.org/downloads.html
Spark release選擇1.6.0
package type是:Pre-built for Hadoop 2.6 and later
我選擇的mirror地址:http://apache.fayea.com/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz
下載後解壓
e) Scala IDE
而後,若是你有Scala編輯器的話,就能夠愉快的去玩耍;我使用的是IntelliJ IDEA 15.0,自行安裝一個scala的插件。
二、 第一個Spark程序
a) 新建一個scala的項目,添加Spark目錄下\lib\ spark-assembly-1.6.0-hadoop2.6.0.jar到項目依賴的jar包;
b) 在src文件夾下新建一個scala script文件,測試你的第一個Spark程序吧
1 package com.iclick 2 /** 3 * Created by Shawn_Liu on 2016/3/4. 4 */ 5 6 import org.apache.log4j.{Level, Logger} 7 import org.apache.spark.{SparkContext, SparkConf} 8 import org.apache.spark.mllib.regression.LinearRegressionWithSGD 9 import org.apache.spark.mllib.regression.LabeledPoint 10 import org.apache.spark.mllib.linalg.Vectors 11 import org.apache.spark.sql.SQLContext 12 object WordCount { 13 def main(args: Array[String]) { 14 // 屏蔽沒必要要的日誌顯示終端上 15 Logger.getLogger("org.apache.spark").setLevel(Level.ERROR) 16 Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF) 17 val conf = new SparkConf().setAppName("wordcount").setMaster("local[4]") 18 val sc = new SparkContext(conf) 19 val sqlContext = new SQLContext(sc) 20 val data=sc.textFile("D:\\Download\\wordcount.txt") 21 data.map(word=>(word,1)).reduceByKey(_+_).foreach(println) 22 println("-----------------分割線--------") 23 data.map(_.toUpperCase()).map(word=>(word,1)).reduceByKey(_+_).foreach(println) 24 } 25 }
爲了運行以上代碼,我在D:\Download\下新建了一個文本文件wordcount.txt,輸入瞭如下內容:
java
c++
c
SAS
sas
scala
python
PYHTHON
JAVA
java
Java
最終運行結果以下:
(c++,1)
(scala,1)
(sas,1)
(python,1)
(SAS,1)
(JAVA,1)
(c,1)
(JAva,1)
(java,2)
(PYHTHON,1)
-----------------分割線--------
(C++,1)
(C,1)
(SAS,2)
(SCALA,1)
(JAVA,4)
(PYTHON,1)
(PYHTHON,1)