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/