开发工具
scala 2.11.8
jdk8
intellij idea 2017(scala plugin)
maven(3.3.9)
导入源码(多种方式):
安装git 后clone 下来:git clone git@github.com:apache/spark.git
或者Github上直接 down下来
maven编译
maven build:
在spark项目的根目录下执行:
$ build/mvn -T 4 -DskipTests clean package
这个要把下载的=很多的依赖,比较耗时,去泡杯枸杞茶喝喝。
试一把编译成功了
$ ./bin/spark-shell
idea 中导入源码
Menu -> File -> Open -> {spark dir}/pom.xml -> Open as Project
然后会自动识别为maven的
可以试一下example包中的例子能不能跑通:
run config:
-Dspark.master=local代表使用本地模式运行Spark代码
后面一行是读取文件的绝对路径
重点来了:
修改pom 依赖的scope
在spark parent及example工程pom文件中将jetty ,guava,hadoop ,scala,spark等相关依赖的scope为provided的 直接注释掉,以便于example工程中能够访问到,否则运行时报错找不到类。
scope 的compile 和provided区别如下
compile
默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。
provided
跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。
使用这个时,不会将包打入本项目中,只是依赖过来。
使用默认或其他时,会将依赖的项目打成jar包,放入本项目的Lib里
再试下是否成功:
对于idea 还有很多优化的选项,网上很多教程
对于不用每次run的时候build:https://my.oschina.net/1987times/blog/330207