天天看點

windows+spark本地運作環境搭建

spark作為一個記憶體mapreduce架構,速度是hadoop的10倍甚至100倍。windows下可以通過簡單設定,搭建本地運作環境。

1、下載下傳spark預編譯版本,spark運作環境依賴jdk,scala,這裡下載下傳的最新spark版本是2.3,對應jdk1.8+scala2.11.8。

java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

scala -version
Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL      

2、下載下傳hadoop-common-2.2工具包,并設定環境變量HADOOP_HOME,PATH。

如果不下載下傳hadoop-common-2.2并設定環境變量,啟動spark-shell時,會報如下錯誤:

ERROR Shell:397 - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binar
ies.      

hadoop-common包下有bin目錄,bin目錄中的内容如下:

windows+spark本地運作環境搭建

3、standalone方式啟動spark:進入spark-2.3.0-bin-hadoop2.7目錄,按住shift,滑鼠右鍵->在此處打開指令視窗。運作bin\spark-shell

windows+spark本地運作環境搭建

啟動成功,會進入scala指令行互動界面,然後就可以進行編碼了。

scala> val textFile = sc.textFile("helloSpark.txt");
textFile: org.apache.spark.rdd.RDD[String] = helloSpark.txt MapPartitionsRDD[1] at textFil
e at <console>:24

scala> textFile.foreach(println)
sparkui
hello,java
spark
hello,scala
hello,spark

scala> val counts = textFile.flatMap(line=>line.split(",")).map(x=>(x,1)).reduceByKey((x,y
)=>(x+y))
counts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[10] at reduceByKey at <conso
le>:25

scala> counts.foreach(println)
(spark,2)
(sparkui,1)
(scala,1)
(hello,3)
(java,1)

scala>      

這裡運作一個最簡單的wordcount程式,先導入一個文檔,文檔五行内容,然後運作flatMap(),将文檔内容每一行按照逗号分割,然後運作map(),reduceByKey()。

繼續閱讀