spark 之 windows下基於IDEA搭建spark開發環境實現wordcount功能
環境準備
因為Spark是scala語言開發的,scala是java語言開發的,所以需要安裝JDK和scala。
JDK1.8
maven-3.8.5
Scala-2.12.15
IDEA-2021.3.3
JDK
注意: 是安裝JDK不是JAVA(JRE)
JDK是Java的開發工具
JRE只是Java程式的執行環境
JDK包含JER
安裝包: jdk-8u333-windows-x64.exe
下載
https://www.oracle.com/java/technologies/downloads/#java8-windows
安裝
修改JDK安裝目錄,其他預設
修改JRE安裝目錄
配置環境變數
測試java環境是否配置成功
按Win+R,輸入cmd進入dos介面
輸入 java –version 出現如下介面說明成功。
Maven
下載
https://maven.apache.org/download.cgi
安裝
下載之後解壓到(目錄可自己定)D:\Program Files\apache-maven-3.8.5
配置
並建立本地maven倉庫地址((目錄可自己定))D:\Program Files\apache-maven-3.8.5\resp
修改配置檔案D:\Program Files\apache-maven-3.8.5\conf\settings.xml
設定本地資源庫地址(預設${user.home}/.m2/repository)
<localRepository>D:\Program Files\apache-maven-3.8.5\resp</localRepository>
Maven中央儲存庫與遠端儲存庫配置
<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
配置maven環境變數
M2_HOME D:\Program Files\apache-maven-3.8.5
MAVEN_HOME D:\Program Files\apache-maven-3.8.5
測試是配置是否成功
mvn -v
出現如下內容,說明成功
scala
下載
https://www.scala-lang.org/download/2.12.15.html
Scala-2.12.15.zip
安裝
解壓到安裝目錄
D:\Program Files\scala-2.12.15
配置環境變數
測試是否安裝成功
IDEA
下載
官網下載(可選擇下載版本)
https://www.jetbrains.com/idea/download/other.html
ideaIU-2021.3.3.exe
注意區分專業版和社群版,專業版需要啟用使用。我下載的是專業版,後續有啟用教程。
安裝
可修改安裝目錄
是否建立桌面快捷方式
勾選上啟動IDEA選項
試用(臨時啟用)
永久啟用需要建立專案之後操作。
下載外掛包
連結:https://pan.baidu.com/s/13FLQWAsPj_E1cK29jR96Bw
提取碼:f07q
啟動
登陸
進入介面,需要註冊帳號登陸。
試用
登陸之後,選擇試用(30天)。
如果試用期已經到了,這裡是無法進入的。需要使用臨時啟用碼啟用。
臨時啟用碼
臨時啟用碼(每天更新的),有效期30天。
下載臨時啟用碼
https://www.jihuooo.com/jhm/code1.zip
我的試用期已經到了,輸入臨時啟用碼。
漢化
漢化(不想漢化的,可忽略)
安裝漢化外掛
安裝好之後,重啟IDEA。
重啟之後,顯示已漢化
建立專案
選擇maven
設定專案名稱和路徑
建立完成,進入主介面會使用有小提示。
永久啟用
下載啟用外掛包
連結:https://pan.baidu.com/s/13FLQWAsPj_E1cK29jR96Bw?pwd=f07q
提取碼:f07q
解壓到D:\hadoop\software\ja-netfilter-v2.2.2
把ja-netfilter.jar新增到idea64.exe.vmoptions(幫助 => 編輯自定義VM選項)
-javaagent:D:\hadoop\software\ja-netfilter-v2.2.2\ja-netfilter.jar
重啟檢視到期時間
maven設定
安裝scala外掛
安裝完之後,重啟IDEA
重啟之後,會自動更新maven資源庫
新增scala框架支援
在pom.xml中新增Spark 框架的依賴
目錄說明
建立的項⽬在以項⽬名稱為名的⽂件夾下,⽂件夾下有以下內容:
1 .idea ⽂件夾 :存放項⽬的控制資訊,包括版本資訊,歷史記錄等等。(上傳SVN以及分享程式碼給別⼈時不需要)
2 src 項⽬的程式碼存放⽂件夾
3 main 項⽬正式程式碼⽂件
3 java 預設存放java程式碼的⽂件夾
4 resource 資源⽂件夾,存放配置⽂件和⼀些資料
5 test 項⽬測試⽂件夾
6 java 測試的java程式碼
7 pom⽂件 項⽬的maven依賴包和⼀些外掛的配置
WordCount
需求說明:通過spark實現詞頻統計
目錄準備
在main下面新建spark目錄
將目錄轉為原始檔型別
在spark下新建scala類
命名為wordCount,選擇Object
資料準備
在專案下,建立datas/words/data1.txt、data2.txt檔案
data1.txt檔案內容為
hello world
hello spark
hello scala
data2.txt檔案內容為
hello world
hello spark
hello scala
hello java
wordCount程式碼
1 import org.apache.spark.{SparkConf, SparkContext} 2 3 object wordCount { 4 def main(args: Array[String]): Unit = { 5 // 建立spark執行配置物件 初始化環境 6 val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount") 7 8 // 建立連線物件 9 val sc = new SparkContext(conf) 10 11 // 設定日誌型別 12 sc.setLogLevel("WARN") 13 14 // 讀取檔案 15 val fileRDD = sc.textFile("datas/words") 16 17 // 將檔案資料進行分詞,按空格切分為單個詞 18 val wordRDD = fileRDD.flatMap(_.split(" ")) 19 20 // 轉換資料結構 word => (word,1),每個詞標記為1 21 val word2OneRDD = wordRDD.map((_,1)) 22 23 // 分組聚合,按詞分組計數 24 val word2CountRDD = word2OneRDD.reduceByKey(_ + _) 25 26 // 直接輸出,列印結果 27 println("============ 直接輸出,列印結果 ============") 28 word2CountRDD.foreach(println) 29 30 // 把聚合結果採集到記憶體中,在輸出 31 println("============ 把聚合結果採集到記憶體中,在輸出 ============") 32 val collect = word2CountRDD.collect().toBuffer 33 collect.foreach(println) 34 35 // 儲存到本地 , repartition指定分割槽個數為1時,結果為檔案,否則為資料夾。 36 word2CountRDD.repartition(1).saveAsTextFile("datas/words/result") 37 // word2CountRDD.saveAsTextFile("datas/output/result") 38 39 println("已儲存到本地: datas/words/result") 40 41 // 關閉連線 42 sc.stop() 43 44 println("執行結束") 45 } 46 }wordCount