windows下執行spark程式
阿新 • • 發佈:2018-12-25
linux普通使用者開發spark程式時,由於無法使用IDEA的圖形化操作介面,所以只能大包圍jar,用spark-submit提交,不是很方便, spark的local模式可以方便開發者在本地除錯程式碼,而不用打包為jar用spark-submit提交執行,或是在spark-shell中逐行執行,下面是在windows上執行sparkPi的程式碼及結果
package com
import scala.math.random
import org.apache.spark._
object localSpark {
def main(args: Array[String]) {
val conf=new SparkConf().setMaster ("local[3]")
.setAppName("Spark Pi")
.set("spark.ui.port", "9995")
.set("spark.driver.cores", "3")
.set("spark.driver.memory", "1g")
.set("spark.executor.memory", "2g")
.set("spark.rdd.compress", "true")
val spark = new SparkContext(conf)
val slices = if (args.length > 0) args(0).toInt else 2
val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
val count = spark.parallelize(1 until n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
println("Pi is roughly " + 4.0 * count / n)
spark.stop()
}
}
sbt檔案的配置為
name := "SparkLocal"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.3.0"
注意點:
1.設定setMaster(“local[3]”),local的引數必須大於2,一個用作drive,剩下的作為worker
2.windows上沒有安裝hadoop,所以spark的依賴包採用的spark-core,即只有spark的核心程式碼,不包含hadoop的配置,所以程式碼中不能讀取hdfs的資料
3.spark-core的版本採用1.5或更高的版本的時候,相關的依賴包下載總是報錯,建議採用1.3版本