如果文章里的内容有误,为避免误人子弟,请一定评论或直接私信我。
我已经很认真的将文章写的尽可能详细,希望这篇文章能给予您微不足道的帮助。

摘要

spark,中文译作星星之火,时至今日,这把由scala所编写的星星之火已经在大数据领域燃起燎原之势。

尽管我们可以直接在idea上运行我们用scala编写的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.RDD
import 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上有可能会报错 不认识的主机testval 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()}
}

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


如果您出现这个错误

建议您将这个目录删除

idea下将scala编写的项目打成jar包相关推荐

  1. SpringBoot项目打成jar包后,无法读取resources下的文件

    最近在使用aspose将word转PDF并进行签章打印,读取凭证文件时遇到一个问题,凭证文件放在resources目录下,Windows下可正常读取,但是打成jar包部署到Linux服务器上却取不到文 ...

  2. idea将项目打成jar包

    在用jmeter做压测时,需要将项目打成jar包放至在如下目录 /Users/admin/Documents/software/apache-jmeter-5.1.1/apache-jmeter-5. ...

  3. 命令行把java项目打成jar包

    工作中需要把jenkin-client项目打成jar包使用. 以下为在命令行用jar命令打包,记录一下: 切换到项目路径,执行 jar cf  jenkin-client.jar  java-clie ...

  4. idea将java项目打成jar包

    一.idea将java项目打成jar包(非maven方式) File -->Project Structure -->Artifacts --> Jar --> From mo ...

  5. 解决项目打成jar包上线无法读取配置文件(可通过挂载的方式解决)

    背景介绍:因为项目上线部署要打成jar包,jar包相当于一个大文件夹,无目录分层,自然就没法读到resources下的文件,于是我找了很多springboot-项目获取resources下文件的方法都 ...

  6. Java项目打成Jar包后执行Jar包指定方法

    最近在考虑跳个槽的问题,也看了几个面试,其中有一个面试让我本地写一个蛇形矩阵,打成Jar包,并且可以使用java -jar 命令启动,本人基础不太牢固,这个问题我找了半天才找到解决的办法,面试题答完直 ...

  7. cmd命令将web项目打成jar包_2020全网首发!JDK14之jpackage命令尝鲜

    jpackage命令使用场景 使用场景是面向java桌面端程序打包. 可以让windows/mac 直接双击使用java程序,对系统里面有没有jdk/jre不做要求. 在这里,我们先理一下以前java ...

  8. 「问题解决」java web项目打成jar包运行后工具类无法读取模板文件的解决方法

    介绍语 本号主要是Java常用关键技术点,通用工具类的分享:以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+d ...

  9. IDEA下maven编译打包Java项目成jar包但是resource下配置文件打包不成功

    今天在IDEA下打包一个Java项目,准备打包成jar包直接执行,打包之后运行时候一直提示resource下资源文件找不到,但我又确实配置了的,而且在IDEA上可以运行,但是打包成jar包之后就运行不 ...

最新文章

  1. OpenCV+python:模板匹配
  2. MFC,ADO方式实现数据库操作
  3. 任务 进程 线程区别
  4. 1988-B. 有序集合
  5. TCP/IP,HTTP,Socket的区别与联系
  6. python判断性别程序_python 实现性别识别
  7. 关于内核态和用户态切换开销的测试
  8. 我查这么多数据,会不会把数据库内存打爆?
  9. left和offsetLeft
  10. 使用JDBC+JSP分层实现新闻管理系统注册、登录功能
  11. 2010.11.18 关于向窗口发送消息
  12. t分布 u分布 卡方分布_F分布、t分布、正太分布与卡方分布的联系与区别
  13. 冒泡排序代码实现与详解
  14. 腾讯云Centos8.0 CPU使用率100%,top查询为kthreaddk占用异常
  15. 如何低成本做好网络营销
  16. 使用python替换word文档部分内容
  17. zookeeper--模拟买票代码
  18. 带动画效果的下拉菜单
  19. 论文推荐-计算机视觉
  20. [转]JAVA环境变量设置完全版

热门文章

  1. python爬快手个人介绍个性_快手个人介绍个性霸气说说_江湖一碗茶喝完各自爬...
  2. 电巢:半导体投资锐减库存调整消费者需求疲软,半导体下行周期何时结束?
  3. Python pdf转csv
  4. sql 经典查询问题
  5. 几个SQL分析小技巧
  6. APP上运行小程序的混合移动研发模式
  7. 店铺选址的6C评估模型
  8. 请注释你那该死的代码
  9. 旋转图片验证码(识别/破解)解决(一)
  10. 基于DS1820与DS1302的控制装置(窗帘控制)