在本地模式wordCount程序的基础上改造
Spark Shell 仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在 IDE 中编制程序,然后打成 jar 包,然后提交到集群,最常用的是创建一个 Maven 项目,利用 Maven 来管理 jar 包的依赖。
这是本地模式的WordCount程序
https://blog.csdn.net/qq_41489540/article/details/109740491
打包的时候一定要给代码.setMaster(“local[2]”) 这个去掉, 在提交的时候使用 —maser 来设置master
将文件路径变成从Main方法传递过来 val filePath = args(0)
def main(args: Array[String]): Unit = {// 指定要分析的文件val filePath = args(0) // 通过main方法参数获取// 1. 创建一个SparkContext 打包的时候, 把master的设置去掉, 在提交的时候使用 --maser 来设置master//在本地运行只能是local模式,val conf: SparkConf = new SparkConf().setAppName("WordCount")val sc: SparkContext = new SparkContext(conf)// 2. 从数据源得到一个RDDval lineRDD: RDD[String] = sc.textFile(filePath)// 3. 对RDD做各种转换val resultRDD: RDD[(String, Int)] = lineRDD.flatMap(_.split("\\W")).map((_, 1)).reduceByKey(_ + _)// 4. 执行一个行动算子 (collect: 把各个节点计算后的数据, 拉取到驱动端)val wordCountArr = resultRDD.collect()wordCountArr.foreach(println)// 5. 关闭SparkContextsc.stop()}
开始打包
Maven clean package. 跟Java项目打包是一样的

先执行 clean 再执行 package
然后target就会有打包好的jar
[INFO] No sources to compile[INFO][INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ demo02 ---[INFO] Tests are skipped.[INFO][INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ demo02 ---[INFO] Building jar: E:\ZJJ_SparkCore\demo02\target\demo02-1.0-SNAPSHOT.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 6.197 s[INFO] Finished at: 2020-11-17T13:46:14+08:00[INFO] Final Memory: 19M/285M[INFO] ---
给打好的包上传到Linux上
上传 “/root/soft/demo02-1.0-SNAPSHOT.jar” 位置上, 具体用什么上传方式都可以,我是用MobaXterm_Personal上传的.
准备要分析的数据
test.txt
111sssdddaszjjassssdzjjaaasssdsaaa
上传到HDFS上
我是直接用 HDFS Explorer工具上传的,你们也可以使用命令来上传
我上传在HDFS的位置是:
/wordCountData/test.txt
开始往Yarn上提交WordCount任务
在Linux的Spark根目录下
[root@zjj101 spark-2.1.1-bin-hadoop2.7]# bin/spark-submit \> --master yarn \> --deploy-mode client \> --class com.WordCount \> /root/soft/demo02-1.0-SNAPSHOT.jar \> hdfs://zjj101:9000/wordCountData
说明 — master 指定是 yarn
--deploy-mode 是客户端模式--class 写你上传的WordCount程序的全限定类目/root/soft/demo02-1.0-SNAPSHOT.jar 就是你打好包上传到Linux的地址hdfs://zjj101:9000/wordCountData 是你要统计分析的路径,这个路径是hdfs上的.我要分析hdfs上的wordCountData 文件夹下的所有文件.
执行结果
20/11/17 14:59:43 INFO scheduler.DAGScheduler: Job 0 finished: collect at WordCount.scala:26, took 22.159336 s(ddd,1)(zjj,2)(as,1)(sssds,1)(assssd,1)(sss,1)(111,1)(aaa,2)
代码地址
https://gitee.com/crow1/ZJJ_SparkCore/tree/11e7fccb7920663777fbcea483c998145c2ce075/demo02
测试文件在resources目录下
