代码版本:spark 2.2.0
本篇文章主要讲述一个application的运行过程。大体分为三部分:(1)SparkConf创建;(2)SparkContext创建;(3)任务执行。
假如我们用scala写了一个wordcount程序对文件单词进行计数,
package com.spark.myapp
import org.apache.spark.{SparkContext, SparkConf}
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("WordCount").setMaster("spark://master:7077”)
val sc = new SparkContext(conf)
sc.textFile(“README.md").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)
sc.stop()
}
}
编译打包jar完成后,要在standalone集群环境提交一个任务,在提交任务机器安装的spark目录下敲入命令:
spark-submit --
class
com
.
spark
.my
app
.
WordCount
--
master
spark
://
master
:7077 /home/xx/
myapps
/
wordcount
.
jar
关于spark-submit是如何运行到任务代码,请参考前面的文章“spark-submit执行过程”。本篇文章主要讲述一个application的运行过程。
大体分为三部分:(1)SparkConf创建;(2)SparkContext创建;(3)任务执行。
1.SparkConf创建
SparkConf包含了Spark集群配置的各种参数,我们看下这个类的说明。
Configuration for a Spark application. Used to set various Spark parameters as key-value pairs.
Most of the time, you would create a SparkConf object with
`
new SparkConf()
`
, which will load
values from any
`
spark.*
`
Java system properties set in your application as well. In this case,
parameters you set directly on the
`
SparkConf
`
object take priority over system properties.
重点就是说new SparkConf()会从系统配置里读取spark相关参数,参数都是k-v对,然后你可以使用
SparkConf的set函数来自己设置覆盖读取的配置。
常见的参数设置函数如下:
(1)设置master url
def setMaster(maste