開源資料處理框架Spark
本節開始搭建我們的Spark開發環境了,編寫一些簡單的函式,打包成jar檔案,然後放入到Spark環境中執行。根據上節的情況,接下來的內容力求更通俗易懂,至少看起不那麼晦澀。本篇主要是安裝步驟,不涉及原理講解,但是開源專案的安裝部署往往也是難點。
在此之前,先閒扯一點題外話。這次的標題是入門到放棄,也是很多初學程式設計,或者想學習開源專案的同學所遇到的問題。剛開始很好奇並且信心滿滿,可是越往後越發現過程很枯燥,逐漸喪失興趣直到放棄。也有的說學這些沒啥用,沒有切實的工作使用背景。
不管是學習程式設計還是其他任何事,思路和方法決定你是否能更快更好的完成預期的目標。不止是程式設計領域,我覺得任何一門技術的意義,應該都只是一塊敲門磚,它能夠暫時讓你獲得一些好處,但不能成為一生追求的目標。當然準備終生投身革命一線鬥爭的的道友就······別過。
這裡學習Spark只需要:基本的高階程式語言基礎。你需要了解啥是變數,物件,方法,如何呼叫,以及較高階的多執行緒,IO,Socket等,這個應該是一門語言最基本的東西了。至於更高階的作業系統,網路,協議,框架等,暫可忽略。程式設計使用的是高階語言,不直接與計算機硬體打交道,也就是說和計算機系統是隔離的,知不知道啥計算機原理、JVM虛擬機器底層編譯原理影響不大。其次,框架是對底層語言的封裝,操作的的是更高階的API介面,其目的就是隱藏內部實現,方便使用。scala也是對java的二次提煉和優化,讓程式碼變得更加簡潔高效了。所以,知道如何編寫一個HelloWorld,並大概瞭解是怎麼執行的就夠了。這裡指的是先入門,並非不重要,允許知識盲點。我們無法決定起點,但可以決定終點。
一個健康的學習路徑,應該是由事物發展和認識事物的規律決定,再合理地規劃學習步驟。正如上節中提到的,在Spark學習中:由初步認識–簡單使用–窺探細節
1,先通過各方面瞭解Spark概念
2,搭建本地執行環境
3,搭建本地開發環境
4,瞭解程式編碼流程
5,學習scala基本語法和高階用法
6,編寫程式並植入到本地環境執行
7,最後瞭解其內部實現機制(也分成度)
當然,越往後會難度越大,但是也是成梯度逐漸增加的。
對於Spark而言,還有另一個要求就是能看懂基本的數學公式,對資料統計和概率論有了解更好。後面也將學習簡單的資料探勘、機器學習等相關演算法的實踐。同理,這些演算法也不需要自己去推演或者編寫,輪子已經有人造好了,可以直接拿來用。那麼,現在的目標很明確了:學會怎麼樣使用輪子了,然後再去了解是咋造輪子的。
扯淡環節完畢,讓我們進入到Spark開發環境搭建吧!
一 安裝IDEA
這裡下載的是社群版,安裝過程一路next直到完成。
二,安裝scala外掛
注意此處的scala外掛的版本要與我們之前下載的IDEA版本一致,那麼如何檢視呢?
下載完外掛後,進入IDEA 依次點選:左上方 file—Settings—Plugins—Install Plugins from disk 選擇外掛下載的目錄點選OK
三 第一個scala helloword
依次點選 file—project—Scala—IDEA—Next如圖
依次編輯第1行:工程名
第2行:工程存放目錄
第3行:JDK版本
第4行:Scala SDK版本
然後Finish
右鍵 專案src—New—Package,然後在新建的包上右鍵 New—Scala Class —命名類名—選擇Object
在類中ctrl+J自動生成主函式和列印函式
到這裡,我們已經成功編輯了第一個程式,接下來將匯入Spark原始碼,讓開發環境跑起來,並編寫一個簡單的函式。
四 構建scala maven專案
file—New—project—maven
如上圖選擇,點選next,命名maven工程
一直點選next直到maven自動構建完成,專案結構如下圖所示
此時注意pom.xml檔案中scala的版本要與IDEA的SDK版本一致
每次修改完pom.xml的配置,重新更新依賴,如下圖所示
這裡,我們將不用的依賴幹掉,如log4j
引入SDK
五 匯入Spark和相關元件原始碼
IDEA自帶maven外掛,點選file—Settings
在pom.xml裡面引入Spark及相關元件的依賴,這裡注意各個元件的版本
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.specs</groupId>
<artifactId>specs</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.1</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.2.0</version>
<type>jar</type>
</dependency>
</dependencies>
匯入相關依賴的包,下載的速度與網速有很大關係,可能等待時間很長,如果失敗,重複更新下載
接下來,可以在src/main/app檔案編寫主函數了
def main(args: Array[String]): Unit = {
println("Hello World!")
val sparkConf = new SparkConf().setMaster("local").setAppName("test")
val sparkContext = new SparkContext(sparkConf)
}
右鍵點選run執行函式
控制檯執行結果
執行結果不報錯表示我們的開發環境部署成功,可能在具體的執行中會有不同的錯誤,仔細回顧每一步,是否哪個步驟沒做對。本篇力求著手細節,即使初次使用IDEA,maven,不知道如何安裝外掛也好,通過此教程都能成功完成。
從下節起,將開始進入正軌的scala語言學習了。先熟悉基本用法,對比它與java語法的區別,瞭解其特有的函式程式設計的思想。好了,衡山後學祝小芸有禮,我們下期再見!