这个参数表示当前Spark Shell要连接到哪个master,如果是local[*],就是使用本地模式启动spark-shell,其中中括号内的型号表示需要使用几个CPU核心(core),也就是启动几个线程模拟spark集群。
--jars这个参数用于把相关的JAR包添加到CLASSPATH中,如果有多个jar包,可以使用逗号分隔符连接它们。
比如,要采用本地模式,在4个CPU核心上运行spark-shell
$ cd /usr/local/spark
$ ./bin/spark-shell --master local[4]
或者,可以在CLASSPATH中添加code.jar,命令如下:
$ cd /usr/local/spark
$ ./bin/spark-shell --master local[4] --jars code.jar
可以执行“Spark-shell --help”命令,获取完整的选项列表,具体如下
$ cd /usr/local/spark
$ ./bin/spark-shell --help
Spark部署模式
Local模式(单机模式)
Standalone模式(使用Spark自带的简单集群管理器)
YARN模式(使用YARN作为集群管理器)
Mesos模式(使用Mesos作为集群管理器)
编写Spark独立应用程序(有更加具体的安装和使用sbt使用方式)
使用Scala编写的程序需要使用sbt进行编译打包,相应的,Java程序使用Maven编译打包,而Python程序通过spark-submit直接提交。
sbt是一款Spark用来对scala编写程序进行打包的工具
使用scala编写独立应用程序,建议遵循建目录方式:/usr/local/spark/mycode/src/main/scala
使用sbt进行文件打包
具体到代码路径:/sparkapp(mycode)/src/main/scala/SimpleApp.scala
以及对应的sbt打包文件:/sparkapp(mycode)/simple.sbt
打包命令:(打包成功后会出现对应信息)
/usr/local/sbt/sbt package
生成的JAR包的位置:~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar(在mycode一级目录下会生成target和program目录)
通过spakr-submit提交应用程序,该命令格式如下:
./bin/spark-submit
--class //需要运行的程序主类,应用程序的入口点
--master // 选择集群还是本地模式
--deploy-mode // 部署模式
... # other options //其他参数
// 应用程序JAR包
[application-arguments] //传递给主类的主方法参数
最后,我们可以将生成的jar包通过spark-submit提交到Spark中运行了,命令如下:
$ /usr/local/spark/bin/spark-submit --class "SimpleApp"
~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep"Lines with a:"
第一个Spark应用程序:WordCount
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object WordCount{
def main(args:Array[String]){
val inputFile = "file:///usr/local/spark/mycode/wordcount/word.txt"
val conf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
val sc = new SparkContext(conf)
val textFile = sc.textFile(input)
val wordCount = textFile.flatMap(line => line.split("").map(word => (word,1))reduceByKey((a,b) => a+b))
wordCount.foreach(println)
}}
作者:KaiwenYu