1. 程式人生 > 其它 >spark 之 windows下基於IDEA搭建spark開發環境實現wordcount功能

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

執行結果