Scala基础(12)Spark命令参数及独立应用程序

本文介绍了Spark命令行参数的使用,如`--master`指定连接的master节点,`--jars`添加依赖JAR包。讲解了Spark在Local、Standalone、YARN和Mesos模式下的部署,并详细阐述如何编写和打包Scala独立应用程序,包括使用sbt工具和遵循的目录结构。最后,展示了如何通过`spark-submit`提交生成的JAR包运行第一个Spark WordCount程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • --master

这个参数表示当前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部署模式
  1. Local模式(单机模式)
  2. Standalone模式(使用Spark自带的简单集群管理器)
  3. YARN模式(使用YARN作为集群管理器)
  4. 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<main-class> //需要运行的程序主类,应用程序的入口点
    --master<matser-url> // 选择集群还是本地模式
    --deploy-mode<deploy-mode> // 部署模式
    ... # other options //其他参数
    <application-jar> // 应用程序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)
}}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值