Windows10 下安裝spark單機版

如同往常一樣安裝spark也出了很多問題,好在一上午終於搞定

spark 基於java,所以首先檢查java是否安裝,注意java安裝路徑最好不要出現空格,雖然網上也有解決方法,但是我的機器上沒有解決問題。

一 檢查java安裝

    命令行輸入java -version,一般會有下面這種結果

C:\Users\yournam>java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

表明有java環境,然後檢查系統變量是否有 “%JAVA_HOME%”,如果沒有則添加,添加方法見此博客 

https://www.cnblogs.com/memento/p/9148721.html

二 安裝Scala

https://www.scala-lang.org/download/all.html 處下載scala-2.11.8,然後解壓並存放在本地電腦C:\SelfFiles\Install\scala-2.11.8處,然後配置環境變量並添加到Path變量中(%SCALA_HOME%\bin),類似於JDK的環境變量配置,如下:

技術分享圖片

然後,打開一個命令行界面驗證是否安裝成功,如下:

技術分享圖片

說明安裝成功。

三安裝hadoop

http://hadoop.apache.org/releases.html下載hadoop-2.8.3,其實下一步“安裝Spark”中我們選擇下載的Spark版本爲spark-2.3.0-bin-hadoop2.7,該版本Spark要求對應的Hadoop要在2.7及以上版本,所以此處我們選擇Hadoop-2.8.3,選擇其他更高的版本也是可以的。然後解壓並存放在C:\SelfFiles\Spark\hadoop-2.8.3,並添加環境變量並添加到Path變量中(%HADOOP_HOME%和%HADOOP_HOME%\bin):

技術分享圖片

一定要檢查Hadoop是否安裝成功,命令行輸入hadoop,沒有報錯則繼續安裝,

如果遇到 Error:JAVA_HOME is incorrectly set,則需要修改java_home 路徑

四安裝spark

http://spark.apache.org/downloads.html下載對應版本的Spark,此處我們下載的Spark版本信息如下:

技術分享圖片

下載到本地之後解壓,並存放在目錄C:\SelfFiles\Spark\spark-2.3.0-bin-hadoop2.7,然後添加環境變量和Path變量中(%SPARK_HOME%和%SPARK_HOME%\bin):

技術分享圖片

到此,單機版的Spark環境應該安裝好了,此時我們在命令行界面中運行spark-shell來驗證是否成功:

 

 

 

 

ææ¯å享å¾ç

雖然最終進入到了spark shell中,但是中間報了一個錯誤,提示找不到C:\SelfFiles\Spark\hadoop-2.8.3\bin\winutils.exe文件,通過查看發現確實不存在該文件,此時我們需要從https://github.com/steveloughran/winutils此處下載與你的spark版本對應的winutils.exe文件,並保存到本地C:\SelfFiles\Spark\hadoop-2.8.3\bin\目錄下。然後再次運行spark-shell,結果如下:

 技術分享圖片

可以發現,已經不再報找不到winutils.exe文件的錯誤了,至於提示“WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform...”的錯誤,嘗試了網上大多數的方法,都未解決,此處暫時未解決。

至此,Spark的環境算是基本搭建完成了。下面就開始搭建使用Scala的開發環境。

 

五 安裝idea

至於IDEA的下載和安裝,此處不再贅述,讀者可以去https://www.jetbrains.com/自行下載並安裝。此處主要記錄下scala插件的安裝,IDEA的插件安裝支持在線安裝和離線安裝,我們此處採用的是離線安裝,即手動下載將要安裝的scala插件,然後在IDEA中加載安裝。

首先,我們從JetBrains官網上的插件庫(http://plugins.jetbrains.com/)搜索scala插件,如下所示:

技術分享圖片

然後,點擊第一個Scala進入下載界面,如下:

技術分享圖片

上面列舉了兼容不同IDEA構建版本的scala插件,所以此處我們應該選擇兼容自己所用IDEA版本的scala插件。從從前面的0x00一節知道,我這裏使用的IDEA版本爲2017.1.2 Build #IU-171.4249.32,built on April 21,2017,所以此時我們應該選擇COMPATIBLE BUILDS一列的值範圍包括171.4249.32的版本,可選擇的比較多,我們隨便選擇一個下載即可,然後保存到本地的某個路徑下,最好是保存在IDEA安裝目錄裏的plugins目錄下,我的保存路徑爲:C:\SelfFiles\Install\IntelliJIDEA\plugins\Scala\scala-intellij-bin-2017.1.20.zip。

接着,打開IDEA,選擇File-->Settings...,可見如下界面:

技術分享圖片

然後單擊右下角的“Install plugin from disk...”,選擇剛剛我們保存的scala插件文件即可,安裝成功後重啓IDEA即可使用。

 其實,如果網絡比較好的話,使用在線安裝更方便,此處也提一下在線安裝的方法:在上面界面中,點擊“Install JetBrains plugin...”或“Browse repositories...”,出現以下界面:

技術分享圖片

在上述界面搜索框中輸入scala即可找到scala插件,然後點擊右側的“Install”安裝即可。然後,我們可以通過新建項目來驗證scala插件是否安裝成功,如下:

技術分享圖片

6、配置maven

maven的下載和配置網絡上面已經有很多教程,此處不再贅述。

7、編寫測試代碼

 下面我們就是用IDEA來編寫一個使用Spark進行數據處理的簡單示例,該例子來自https://my.oschina.net/orrin/blog/1812035,並根據自己項目的名稱做輕微修改,創建maven工程,項目結構如下所示:

技術分享圖片

pom.xml文件內容:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.hackhan.demo</groupId>
 8     <artifactId>jacklee</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11 
12     <properties>
13         <spark.version>2.3.0</spark.version>
14         <scala.version>2.11</scala.version>
15     </properties>
16 
17     <dependencies>
18         <dependency>
19             <groupId>org.apache.spark</groupId>
20             <artifactId>spark-core_${scala.version}</artifactId>
21             <version>${spark.version}</version>
22         </dependency>
23         <dependency>
24             <groupId>org.apache.spark</groupId>
25             <artifactId>spark-streaming_${scala.version}</artifactId>
26             <version>${spark.version}</version>
27         </dependency>
28 
29         <dependency>
30             <groupId>org.apache.spark</groupId>
31             <artifactId>spark-sql_${scala.version}</artifactId>
32             <version>${spark.version}</version>
33         </dependency>
34         <dependency>
35             <groupId>org.apache.spark</groupId>
36             <artifactId>spark-hive_${scala.version}</artifactId>
37             <version>${spark.version}</version>
38         </dependency>
39         <dependency>
40             <groupId>org.apache.spark</groupId>
41             <artifactId>spark-mllib_${scala.version}</artifactId>
42             <version>${spark.version}</version>
43         </dependency>
44 
45     </dependencies>
46 
47     <build>
48         <plugins>
49 
50             <plugin>
51                 <groupId>org.scala-tools</groupId>
52                 <artifactId>maven-scala-plugin</artifactId>
53                 <version>2.15.2</version>
54                 <executions>
55                     <execution>
56                         <goals>
57                             <goal>compile</goal>
58                             <goal>testCompile</goal>
59                         </goals>
60                     </execution>
61                 </executions>
62             </plugin>
63 
64             <plugin>
65                 <groupId>org.apache.maven.plugins</groupId>
66                 <artifactId>maven-compiler-plugin</artifactId>
67                 <version>3.6.0</version>
68                 <configuration>
69                     <source>1.8</source>
70                     <target>1.8</target>
71                 </configuration>
72             </plugin>
73 
74             <plugin>
75                 <groupId>org.apache.maven.plugins</groupId>
76                 <artifactId>maven-surefire-plugin</artifactId>
77                 <version>2.19</version>
78                 <configuration>
79                     <skip>true</skip>
80                 </configuration>
81             </plugin>
82 
83         </plugins>
84     </build>
85 
86 </project>

WordCount.scala文件內容如下:

 1 package com.hackhan.demo
 2 
 3 import org.apache.spark.{SparkConf, SparkContext}
 4 
 5 
 6 /**
 7   *
 8   * @author migu-orrin on 2018/5/3.
 9   */
10 object WordCount {
11   def main(args: Array[String]) {
12 
13     /**
14       * SparkContext 的初始化需要一個SparkConf對象
15       * SparkConf包含了Spark集羣的配置的各種參數
16       */
17     val conf=new SparkConf()
18       .setMaster("local")//啓動本地化計算
19       .setAppName("WordCount")//設置本程序名稱
20 
21     //Spark程序的編寫都是從SparkContext開始的
22     val sc=new SparkContext(conf)
23     //以上的語句等價與val sc=new SparkContext("local","testRdd")
24     val data=sc.textFile("C:/SelfFiles/Spark/test/wordcount.txt")//讀取本地文件
25     var result = data.flatMap(_.split(" "))//下劃線是佔位符,flatMap是對行操作的方法,對讀入的數據進行分割
26       .map((_,1))//將每一項轉換爲key-value,數據是key,value是1
27       .reduceByKey(_+_)//將具有相同key的項相加合併成一個
28 
29     result.collect()//將分佈式的RDD返回一個單機的scala array,在這個數組上運用scala的函數操作,並返回結果到驅動程序
30       .foreach(println)//循環打印
31 
32     Thread.sleep(10000)
33     result.saveAsTextFile("C:/SelfFiles/Spark/test/wordcountres")
34     println("OK,over!")
35   }
36 }

其中處理的目標文件C:/SelfFiles/Spark/test/wordcount.txt的內容爲(你也可以自己隨意填寫):

this is my first test.

運行結果如下:

技術分享圖片

IDEA打印結果:

技術分享圖片

以上安裝過程借鑑了很多前人經驗,特此表示感謝,參考鏈接:

https://note.youdao.com/ynoteshare1/index.html?id=3287f13ad5168e6d641fa260518dbeed&type=note#/

http://www.bubuko.com/infodetail-2637987.html

https://blog.csdn.net/songhaifengshuahttps://stackoverflow.com/questions/45438513/spark-shell-the-system-cannot-find-the-path-specifiedige/article/details/79575308

https://blog.csdn.net/Jason_yyz/article/details/80150328

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章