Spark环境配置(Spark+Sbt+Intellij+Mac)
- 我的部署需求
- spark-2.1.1 (2017年5月24日的最新版本)
- scala 2.11.7 (此时最新版本是scala 2.12,但是官网指出spark-2.1.1只能兼容scala 2.11.*)
- java 1.8.0_121
- Spark本地模式的安装和一些环境变量的设置可参考Spark mac下Spark的安装与使用
1.打开idea配置scala plugin
- 官网安装scala插件教程可能会很慢
- 离线下载Scala plugin,然后在个人偏好(preferences)->插件(Plugins)中进行导入离线下载的插件包,注意版本要可兼容
2.新建Scala项目,使用Sbt进行安装Spark依赖
- 新建SBT项目
设置scala sdk版本和工程名
基本的路径结构如下,在其中的build.sbt设置spark安装依赖。我在main/scala/example中新建了一个Scala class文件,name为SimpleApp, kind选择object,后续的scala代码写在SimpleApp中。
我的build.sbt文件内容如下:
name := "SparkStudy" version := "1.0" scalaVersion := "2.11.7" // https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.1.1" // https://mvnrepository.com/artifact/org.apache.spark/spark-mllib_2.11 libraryDependencies += "org.apache.spark" % "spark-mllib_2.11" % "2.1.1"
寻找其他的spark依赖,就去https://mvnrepository.com/artifact/org.apache.spark寻找对应的版本,对应的sbt文件如下图所示
3.来个示例程序跑一跑
- Main.scala的类SimpleApp中我的代码文件如下:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "/usr/local/spark-2.1.1-bin-hadoop2.7/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println(s"Lines with a: $numAs, Lines with b: $numBs")
//Lines with a: 62, Lines with b: 30
sc.stop()
}
}
问题解决:如果遇到Master url 找不到的情况: 点击edit configuration,在左侧点击该项目。在右侧VM options中输入“-Dspark.master=local”,指示本程序本地单线程运行,再次运行即可。原文:解决A master URL must be set in your configuration错误
使用sbt打包,并交给spark的spark-submit分发给其他机器运行
1.在idea的工程目录下执行sbt package,生成sparkstudy_2.11-1.0.jar,如果没有安装请先安装好sbt
2.使用spark-shell进行运行
$SPARK_HOME/bin/spark-submit \ --class "SimpleApp" \ --master local \ target/scala-2.11/sparkstudy_2.11-1.0.jar