我们先看一个完整的实例wordcount
import org.apache.spark._
import SparkContext._
object WordCount {
def main(args: Array[String]) {
if (args.length != 3 ){
println("usage is org.test.WordCount <master> <input> <output>")
return
}
val sparkConf = new SparkConf().setAppName("WordCount")
val sc = new SparkContext(sparkConf)
val rowRdd= sc.textFile(args(1))
val resultRdd = rowRdd.flatMap(line => line.split("\\s+"))
.map(word => (word, 1)).reduceByKey(_ + _)
resultRdd.saveAsTextFile(args(2))
}
}
程序的核心执行流程就是最后三行代码,用图例展示如下:
以运行在YARN上为例,提交上面Spark程序的脚本如下:
spark-submit --masteryarn-cluster
--class com.roger.examples.WordCount
--driver-memory 2g //driver进程使用的内存大小
--driver-cores 1 //driver程序运行需要的cpu内核数
--executor-memory 3g //每个executor进程使用的内存大小
--executor-cores 3
--num-executors 3
local模式
本地模式是将Spark应用以多线程方式直接运行在本地,通常用于程序调试。其分类如下:
local:只启动一个executor
local[K]:启动K个executor
local[*]:启动跟cpu数目相同的executor
standalone模式
独立模式是将Spark应用独立运行在一个集群中。