专注app软件定制开发如果文章里的内容有误,专注app软件定制开发为避免误人子弟,专注app软件定制开发请一定评论或直接私信我。
专注app软件定制开发我已经很认真的将文章写的尽可能详细,希望这篇文章能给予您微不足道的帮助。
摘要
,中文译作星星之火,时至今日,这把由scala所编写的星星之火已经在大数据领域燃起燎原之势。
尽管我们可以直接在idea上运行我们用编写的spark项目,但实际生产中,我们还是需要将一个项目打成一个jar包上线成产环境。
软件版本:
idea:2020
spark:2.0.1
scala:2.11
hadoop-2.7.2
希望您已经在您的window下准备好上述环境,linux下同样如此
本文整个流程如下:
idea编写测试代码–>windows下降项目打包成jar–>上传至linux并使用命令提交job
本文使用的是yarn模式提交
不选择maven打包成jar的原因是maven编译项目并不默认支持scala,如果希望使用maven编译scala项目,需要使用插件,maven插件的引入对于如在下之类的maven小白而言,并不太友好
因此我们直接使用idea打包
1、编写测试代码
使用maven创建项目的过程本文便不再赘述
但是需要注意的是,如果你使用了hdfs,就需要将core-site.xml文件和hdfs-site.xml文件拷贝到项目的resource目录下,使用到了hive需要拷贝hive-site.xml文件和在pom文件中添加对应依赖
代码如下:
注意:这是在打包上传到linux的代码,在window下测试时请将文中的yarn改成loacl[*
]
package com.cqaiimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object shellTest { // window下设置用户为hadoop有权限用户 System.setProperty("HADOOP_USER_NAME", "root") def main(args: Array[String]): Unit = { /* start test 包名:com.cqai.shellTest */ // 注意:如果你希望使用yarn提交你的job,master一定要是yarn,如果不是yarn,使用local[*]等,有可能会报错的 val sparkConf = new SparkConf().setMaster("yarn").setAppName("test1") val context = new SparkContext(sparkConf) // 注意:虽然spark默认从hadoop下读取文件,但建议还是写上hdfs,不然在window上有可能会报错 不认识的主机test val inputRDD: RDD[String] = context.textFile("hdfs://master:9000/user/hive/warehouse/initial_data.db/customer/mach_data=20220801") // 这行代码用于在window下测试和让inputRDD加载执行, inputRDD.collect().foreach(println) context.stop() }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
2、window下使用idea打包
强烈建议直接看后面的图片流程,我在图片上标明了箭头,按照箭头从小到大操作即可
文字流程如下:
点击idea右上角
File=>projectStructure=>artifacts=>点击加号=>点击from model。。。(后续单词我省略了) =>点击Main Class选项框后的文件夹
=>点击Projet=>选择你项目入口的main方法=>点击ok=>在弹出的界面点击ok=>再次点击ok=>点击Build=>Build artifacts=>选中您的项目点击build即可
如果您希望打成瘦包,建议查看图片
胖包和瘦包的区别是胖包含有你用到的依赖和你写的代码,而瘦包只有你写好的代码,瘦包需要你linux上的软件版本和你的依赖版本相同才能运行
我打的是瘦包,如果您希望打成胖包,在下面第五张图片中有对应方法介绍
1
2
3
4
4
5
6
7
8
随后在linux下启动hadoop,并提交job
进程截图:
提交命令
注意我打好的jar包放在了spark目录下我创建的job目录里
spark-submit \ --class com.cqai.shellTest \ --master yarn \ --deploy-mode cluster \ ./job/matchPargetTest.jar 10
- 1
- 2
- 3
- 4
- 5
- 6
如果您出现这个错误
建议您将这个目录删除