1. 程式人生 > >開源資料處理框架Spark

開源資料處理框架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語法的區別,瞭解其特有的函式程式設計的思想。好了,衡山後學祝小芸有禮,我們下期再見!