1. 程式人生 > >Spark學習記錄(一)Spark 環境搭建以及worldCount示例

Spark學習記錄(一)Spark 環境搭建以及worldCount示例

安裝Spark
-------------------

首先,安裝spark之前需要先安裝scala,並且安裝scala的版本一定要是將要安裝的spark要求的版本。比如spark2.1.0 要求scala 2.11系列的版本,不能多也不能少
1.下載spark-2.1.0-bin-hadoop2.7.tgz

地址:http://spark.apache.org/downloads.html
2.解壓

Linux中:
3.環境變數
[/etc/profile]
SPARK_HOME=/soft/spark
PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

[source]
$>source /etc/profile

Windos系統中:

將spark安裝目錄的bin目錄以及sbin目錄新增到path環境變數中

4.驗證spark
執行spark的bin目錄中的spark-shell

5.webUI
http://localhost:4040/

注:在spark-shell中 函式.(注意“.”)可以檢視api

 

spark實現word count
------------------------

建立測試文件test.txt內容為

hello world1
hello world2
hello world3
hello world4

開啟spark-shell按行執行下列命令

//單詞統計1
$scala>val rdd1 = sc.textFile("/home/centos/test.txt")
$scala>val rdd2 = rdd1.flatMap(line=>line.split(" "))
$scala>val rdd3 = rdd2.map(word = > (word,1))
$scala>val rdd4 = rdd3.reduceByKey(_ + _)
$scala>rdd4.collect

//單詞統計2
sc.textFile("/home/centos/test.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).collect

//統計所有含有wor字樣到單詞個數。filter

//過濾單詞
sc.textFile("/home/centos/test.txt").flatMap(_.split(" ")).filter(_.contains("wor")).map((_,1)).reduceByKey(_ + _).collect

 

[API]
SparkContext:
Spark功能的主要入口點。代表到Spark叢集的連線,可以建立RDD、累加器和廣播變數.
每個JVM只能啟用一個SparkContext物件,在建立sc之前需要stop掉active的sc。

SparkConf:
spark配置物件,設定Spark應用各種引數,kv形式。

 

分別以scala以及Java實現wordcount示例

----------------------------------------------------------

建立Java專案,新增maven以及scala支援:

專案中新增spark依賴包

scala版:

Java版:

直接執行即可,輸出如下:

有此可見scala與Java開發Spark的程式碼差異,太巨大了,還是別偷懶趕緊去學scala吧,開發效率不是一個級別的。

 

接下來我們可以把我們的專案打成jar包,通過spark-submit命令在spark中執行:

spark-submit --master [主節點地址] --name [任務名稱] --class [jar包的main方法入口類名] [jar包地址]

spark-submit --master local --name myWordCount --class WordCountScala D:\workSpace\58QF\sparkFirst\target\sparkFirst-1.0-SNAPSHOT.jar