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版本