1. 程式人生 > >八、window搭建spark + IDEA開發環境

八、window搭建spark + IDEA開發環境

mas span rgs oracl tps 文件 ide oracle -h

本文將簡單搭建一個spark的開發環境,如下:

1)操作系統:window os

2)IDEA開發工具以及scala插件(IDEA和插件版本要對應):

  2-1)IDEA2018.2.1:https://www.jetbrains.com/

  2-2)scala-intellij-bin-2018.2.11.zip :http://plugins.jetbrains.com/plugin/1347-scala

3)scala和Java語言的開發包(spark2.4.0對應的可用版本):

  5-1)scala2.11 https://www.scala-lang.org/download/2.11.12.html

  5-2)JDK1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

4)spark開發包:spark2.4.0 http://spark.apache.org/downloads.html

我這裏下載的是pre-built for apache hadoop 2.7 and later的類型,支持hadoop2.7+的版本

技術分享圖片

5)hadoop以及hadoop在window運行的工具包(hadoop和winutils版本要對應,winutils比較麻煩如果網上找不到對應的版本需要自己編譯

):

  4-1)hadoop3.1.1 https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz

  4-2)winutils3.1.1 https://files.cnblogs.com/files/lay2017/apache-hadoop-3.1.1-winutils-master.zip

註意:spark開發環境對其相關依賴是有版本要求的

本文默認你已經安裝好了IDEA並配置好scala,JDK環境

安裝scala插件

file -> setting從硬盤安裝

技術分享圖片

找到你下載的scala插件,安裝並重啟IDEA

技術分享圖片

安裝hadoop環境

我們先把winutils的bin目錄下的所有文件覆蓋到hadoop的bin目錄下,這樣hadoop就能支持在windows上運行了。

然後我們把hadoop設置到系統環境變量中,如:

設置HADOOP_HOME

技術分享圖片

設置PATH

技術分享圖片

註意:設置hadoop環境變量需要重啟計算機

搭建scala項目

我們直接搭建一個scala的IDEA項目

技術分享圖片

與一般的其它項目創建步驟一模一樣,一步步填寫下去

當項目搭建完畢,我們需要把spark的開發包引入項目;

從file -> project structure把spark的所有開發(整個jars文件夾)包引入到項目中;在spark2.0以後原先的一個獨立開發包已經被拆分成了很多單獨的小包,所以這裏引入整個文件夾

技術分享圖片

這樣我們就有了一個簡單的spark程序結構,包括了spark包、JDK包、scala的包

技術分享圖片

測試代碼

我們簡單地使用wordCount程序來測試一下spark是否可用

首先,我們在src目錄下新建一個cn.lay的文件目錄,在該目錄下我們建立一個WordCount.scala文件,編寫如下代碼:

package cn.lay

import org.apache.spark.{SparkConf, SparkContext}

/**
  * @Description 字數統計
  * @Author lay 
  * @Date 2018/12/03 22:46
  */
object WordCount {
  def main(args: Array[String]): Unit = {
    // 創建SparkConf
    val conf = new SparkConf().setAppName("WordCount").setMaster("local");
    // 創建SparkContext
    val sc = new SparkContext(conf);
    // 輸入文件
    val input = "C:\\Users\\admin\\Desktop\\word.txt";
    // 計算頻次
    val count = sc.textFile(input).flatMap(x => x.split(" ")).map(x => (x, 1)).reduceByKey((x, y) => x + y);
    // 打印結果
    count.foreach(x => println(x._1 + ":" + x._2));
    // 結束
    sc.stop()
  }
}

代碼解釋:我們先創建了一個sparkContext,基於sparkContext去讀取了本地文件word.txt,然後經過一系列的RDD計算,最後打印並關閉sparkContext

註意:

1)這裏setMaster("local")意思是將spark運行在本地,這樣我們就不用一個獨立的spark集群,直接在本地開發環境運行spark;

2)而之前我們配置了hadoop的環境變量,就不用在程序中指定hadoop的根路徑了

新建一個文件夾C:\\Users\\admin\\Desktop\\word.txt,文件內容如:

this is a word count demo

然後直接運行main方法,控制臺輸出如:

技術分享圖片

八、window搭建spark + IDEA開發環境