1,使用IDEA软件进行开发.
在idea中新建scala project, File-->New-->Project.选择Scala-->Scala
![](https://app.yinxiang.com/shard/s22/res/18af6c4c-de32-4a01-bd5d-f639bead93dd/1.png)
2,在编辑窗口中完成WordCount程序的编写,完整程序如下:
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Word Count")
val sc = new SparkContext(conf)
val textFile = sc.textFile("/usr/local/spark-1.4.0/README.md")
val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
val counts = wordCounts.collect()
for(count <- counts) {
println(count._1 + ":" + count._2)
}
}
}
3.本地调试及debug程序:
![](https://app.yinxiang.com/shard/s22/res/497cb17c-80ce-4ca3-b826-751ba487603a/2.png)
如上图所示,选择Main class,在VM options中设置参数 -Dspark.master=local表示以当前机器为master.
4,程序中结果在窗口中打印,如下
![](https://app.yinxiang.com/shard/s22/res/84466f52-3317-4667-8ea4-133db7eae2ea/3.png)
5,以spark-submit形式提交程序并运行
5.1,从idea打包导出可运行jar程序
“File”–> “Project Structure” –> “Artifact”,选择“+”–> “Jar” –> “From Modules with dependencies”,选择main函数,并在弹出框中选择输出jar位置,并选择“OK”。
![](https://app.yinxiang.com/shard/s22/res/915ca3f1-e916-40bc-b564-55bdf5546258/4.png)
![](https://app.yinxiang.com/shard/s22/res/a21b0741-b655-434a-ac30-8ead6099aa05/5.png)
点击ok后,build-->Build Artifact,弹出如下窗口
![](https://app.yinxiang.com/shard/s22/res/664b5f56-1ba5-4375-b808-cac300f1c2f3/6.png)
选择Rebuild,在桌面上生成SparkTest.jar文件.
5.2,提交SparkTest.jar文件到Spark集群中并运行
本次将jar包从主机提交到虚拟机集群中
(1)master上启动spark,SPARK_HOME/sbin/start-all.sh.可在浏览器中通过:master:8080访问
![](https://app.yinxiang.com/shard/s22/res/4f7a4e63-0b21-414b-9fa4-4004d872bc84/7.png)
(2)使用spark-submit命令远程提交jar包,更多spark-submit命令参数配置可访问http://spark.apache.org/docs/latest/submitting-applications.html
进入本机的SPARK_HOME目录下,
命令:bin/spark-submit --class WordCount --master spark://master:7077 --executor-memory 4G --total-executor-cores 4 /home/file/SparkJob/SparkTest.jar 1000
任务提交后,
![](https://app.yinxiang.com/shard/s22/res/255be3c0-e618-4fef-ba18-35aaabaf779a/9.png)
此时访问master:8080端口,可以看到正在运行的任务
![](https://app.yinxiang.com/shard/s22/res/322b2ce6-e5ad-41ae-aa85-0a749d00d005/8.png)
待到任务运行完成,命令窗口中可以看到运行结果
![](https://app.yinxiang.com/shard/s22/res/01f4c223-f520-4c33-be40-608c5f3a9a5b/10.png)
此时再次访问master:8080,可以看到Completed Applications中有一个Word Count的任务已完成
![](https://app.yinxiang.com/shard/s22/res/414b69e3-1e28-4863-ab59-611bcd07d026/11.png)