【Spark】(六)任务提交(Spark Submit)

  • Post author:
  • Post category:其他

Spark 任务的提交

spark-submit的一般格式如下:

bin/spark-submit [options] <app jar | python file> [app options]

[options] 是要传给spark-submit 的标记列表。你可以运行spark-submit –help 列出所有可以接收的标记

<app jar | python File> 表示包含应用入口的JAR 包或Python 脚本。

[app options] 是传给你的应用的选项。如果你的程序要处理传给main() 方法的参数,它只会得到[app options] 对应的标记,不会得到spark-submit 的标记。

spark-submit的一些常见标记:
在这里插入图片描述

案例:WordCount(单词计数)

1、在Maven工程中创建src同级目录in,并在其目录下创建word.txt文件
word.txt文件内容如下:

hello java
hello spark
hello scala

2、在Linux上/opt目录下创建kb09file文件夹,并将word.txt文件导入/opt/kb09file目录下
在这里插入图片描述
3、创建HDFS上的/data目录下文件夹kb09file,并将word.txt上传hdfs,然后为其文件夹赋权

hdfs dfs -mkdir /data/kb09file
hdfs dfs -put word.txt /data/kb09file
hdfs dfs -ls /data/kb09file
hdfs dfs -chmod -R 777 /data/kb09file

在这里插入图片描述
4、在Maven工程中创建src同级目录resources,并在其目录下创建userset.properties文件,存放路径参数,并将其上传至Linux的/opt/kb09file目录下

loadfile:hdfs://192.168.247.201:9000/data/kb09file/word.txt
outfile:hdfs://192.168.247.201:9000/data/kb09file/outfile

在这里插入图片描述
5、WordCount代码

object WordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("wordcount")
    val sc = new SparkContext(conf)

    //创建存放路径参数的对象
    val properties = new Properties()

    //导入Linux上存放路径参数的文档userset.properties的路径
    properties.load(new FileInputStream("/opt/kb09file/userset.properties"))

    val loadFilePath = properties.get("loadfile").toString
    println(loadFilePath)
    val outFilePath = properties.get("outfile").toString
    println(outFilePath)

    //导入word.txt文档路径
    val lines = sc.textFile(loadFilePath)
    //单词计数
    val result = lines.flatMap(x=>x.split(" ")).map((_,1)).reduceByKey(_+_)
    result.collect.foreach(println)

    //结果保存路径
    result.saveAsTextFile(outFilePath)

    sc.stop()
  }
}

6、将WordCount打成jar包,并上传至Linux的/opt/kb09file/目录下,步骤如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除sparkstu2.jar包中META-INF文件夹内的DUMMY.DSA和DUMMY.SF文件

  • 方式一:手动删除
  • 在这里插入图片描述
  • 方式二:先将jar包上传至Linux的/opt/kb09file/目录下,执行以下命令删除jar包中META-INF文件夹内的DUMMY.DSA和DUMMY.SF文件
zip -d /opt/kb09file/sparkstu2.jar 'META-INF/.SF' 'META-INF/.DSA' 'META-INF/*SF'

查看jar包是否导入成功
在这里插入图片描述
7、执行spark-submit命令

spark-submit \
--class gaoji.WordCount \
--master local[*] \
./sparkstu2.jar

在这里插入图片描述

查看是否提交成功
在这里插入图片描述
在这里插入图片描述
注意事项
如果以后文件有所改动,则只需要改动Linux的/opt/kb09file/目录下的userset.properties文件中的文件来源路径和结果保存路径即可
在这里插入图片描述
参考文献:
https://www.pianshen.com/article/2869700089/


版权声明:本文为qianchun22原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。