目录

一、查看自己的运行入口

二、spark程序内部排查

2.1查看配置类

2.2 如果存在外部环境引入,引入的路径是否正确

三、jar包是否打对


在运行spark程序的时候,总是报这个错误java.lang.ClassNotFoundException,折磨了我一整天。

现在我解决了这个bug。我就想总结一下遇到这个情况如何排查它。

一、查看自己的运行入口

${SPARK_HOME}/bin/spark-submit \     #spark指令
--jars /usr/local/hive/auxlib/hudi-spark-bundle_2.11-0.5.2-incubating.jar \   #加载的jar包
--conf spark.sql.hive.convertMetastoreParquet=false \
--conf spark.executor.heartbeatInterval=120s \
--conf spark.network.timeout=600s \
--conf spark.sql.catalogImplementation=hive \
--conf spark.yarn.submit.waitAppCompletion=false \
--name lr \
--conf spark.task.cpus=1 \
--conf spark.executor.cores=4 \
--conf spark.sql.shuffle.partitions=50 \
--master yarn \
--deploy-mode client \
--driver-memory 512M \
--executor-memory 3G \
--num-executors 1 \
--class com.qf.bigata.LRClass \    #这里非常重要,就是类的路径,要正确
/data/jar/recommend-test-1.0.jar \    #这是本地虚拟机里面要运行的jar包,名字不要出错!
-e prod -x root

其实我就是jar名字多打了一个.,就是一个小黑点导致我卡了一天。

二、spark程序内部排查

2.1查看配置类

下面要重点关注ip号和端口号是否正确,然后解析的类名有没有写对。

package com.qf.bigata.confimport org.slf4j.LoggerFactory/*** 配置类,用于规定调用jar的时候的选项的使用*/
case class Config(env:String = "",hBaseZK:String = "192.168.10.101",hBasePort:String = "2181",hFileTmpPath:String = "/tmp/hFile",tableName:String = "",irisPath:String = "",proxyUser:String = "root",topK:Int = 10)
object Config {private val logger = LoggerFactory.getLogger(Config.getClass.getSimpleName)/*** 解析参数* @param obj : 用于判断解析参数类的类型* @param args : 具体的参数值*/def parseConfig(obj: Object, args: Array[String]): Config = {//1. 获取到程序名称val programName = obj.getClass.getSimpleName.replace("$", "")//2. 类似于getopts命令//2.1 得到解析器val parser = new scopt.OptionParser[Config](s"ItemCF ${programName}") {head(programName, "v1.0")opt[String]('e', "env").required().action((x, config) => config.copy(env = x)).text("dev or prod")opt[String]('x', "proxyUser").required().action((x, config) => config.copy(proxyUser = x)).text("proxy username")opt[String]('z', "hBaseZK").optional().action((x, config) => config.copy(hBaseZK = x)).text("hBaseZK")opt[String]('p', "hBasePort").optional().action((x, config) => config.copy(hBasePort = x)).text("hBasePort")opt[String]('f', "hFileTmpPath").optional().action((x, config) => config.copy(hFileTmpPath = x)).text("hFileTmpPath")opt[String]('t', "tableName").optional().action((x, config) => config.copy(tableName = x)).text("tableName")opt[Int]('k', "topK").optional().action((x, config) => config.copy(topK = x)).text("topK")programName match {case "ItemCF" => logger.info(s"ItemCF is staring ---------------------------->")case "AlsCF" => logger.info(s"AlsCF is staring ---------------------------->")case "ItemBaseFeature" => logger.info(s"ItemBaseFeature is staring ---------------------------->")case "UserBaseFeature" => logger.info(s"UserBaseFeature is staring ---------------------------->")case "ArticleEmbedding" => logger.info(s"ArticleEmbedding is staring ---------------------------->")case "LRClass" => logger.info(s"LRClass is staring ---------------------------->")case _ =>}}//2.2 解析parser.parse(args, Config()) match {case Some(conf) => confcase None => {logger.error(s"cannot parse args")System.exit(-1)null}}}
}

2.2 如果存在外部环境引入,引入的路径是否正确

就如上图如果有环境,也要仔细核对路径。

三、jar包是否打对

打了没有依赖的jar,找不到文件是真的很正常咯。

看我的jar包邮两个dependencise,至于上面第二个jar包,我一开始是使用这个,但是配置文件总是少了一行。非要我自己把正确的代码添加上,真的太麻烦了。

然后我就使用最后一个dependencise,发现配置文件没有少那个代码。

打错jar包,其实也会有报错找不到文件。我的虚拟机重启过没有报错日志。(真的发现跑本地模式没开集群模式,不开yarn,yarn就真的不跑了,连错误日志都不打了。)

下面这个就是我之前打错jar报错截图。

上传到服务器中的jar说明_林柚晞的博客-CSDN博客

有关java.lang.ClassNotFoundException报错的总结相关推荐

  1. Caused by: java.lang.IllegalArgumentException报错

    报错内容: java.lang.IllegalStateException: Failed to load ApplicationContextat org.springframework.test. ...

  2. 使用toArray将List转数组出现java.lang.ClassCastException报错

    使用toArray将List转数组出现java.lang.ClassCastException报错 先贴报错的代码 ArrayList list = new ArrayList(); list.add ...

  3. 在拦截器中获取请求参数,[Ljava.lang.String; cannot be cast to java.lang.String报错

    Map<String,Object> parametersmap=invocation.getInvocationContext().getParameters();//获取请求参数    ...

  4. Intellij IDEA 导入或运行流式处理框架storm以及java.lang.NoClassDefFoundError报错的解决方案

    网上有很多使用eclipse编辑storm的,但是我觉得eclipse界面不太友好,于是毅然使用intellij IDEA来编辑 但是直接无脑导入会有各种各样奇葩的报错,于是我在解决了问题之后与大家分 ...

  5. 编译Android源码:Exception in thread main java.lang.UnsupportedClassVersionError:报错解决

    报错: Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/verity/ ...

  6. java.lang.UnsatisfiedLinkError报错

    具体报错为:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/dat ...

  7. 【Bug总结】java.lang.IllegalThreadStateException报错bug的解析

    背景 在执行单元测试的时候,发现同一线程运行多次后,就会报一个线程的错误: Exception in thread "Main Thread" java.lang.IllegalT ...

  8. java.lang.IllegalArgumentException报错

    报错信息如下: 主要受spring版本与JDK版本不对应导致的, Spring3.X支持到JDK7,Spring4.X支持JDK8,最低支持到JDK6. 我当前的环境是spring3.2,JDK1.8 ...

  9. quartz 报错:java.lang.classNotFoundException

    最近在做一个调度平台改造的项目,quartz在测试环境跑的是单机环境,生产上两台服务器做集群. 测试环境是ok的,生产上线后报错,一个类java.lang.classNotFoundException ...

  10. 首次使用eclipes运行项目报错“Java.lang.ClassNotFoundException”

    首次使用eclipes运行项目报错"Java.lang.ClassNotFoundException" 运行项目时提示: 解决方法: 1.点击菜单-Project-Build Au ...

最新文章

  1. opencv根据直线方程求交点坐标
  2. 博文视点大讲堂35期-It's Android Time:程序员创富有道! 圆满结束
  3. C语言 字符串前加L的意义 如:L“A”
  4. python3基础语法-Python3入门(三)——Python基础语法
  5. jeecg uedit 自定义图片上传路径
  6. [你必须知道的.NET]第十二回:参数之惑---传递的艺术(下)
  7. Java坦克大战 (一) 之产生一个窗口
  8. 国内常用的学习flutter地址
  9. 本教程针对HBuilder5.0.0,制作日期2014-12-31(从HBuilder工具上获得)
  10. Debug javascript inside jsp page 调试jsp嵌入的js
  11. [html] HTML5如何监听video的全屏和退出全屏?
  12. Node中使用token(基于第三方包jsonwebtoken)
  13. idea下使用Maven找不到类
  14. 成为数据分析师需要具备的知识体系
  15. 计算机术语多态意思,计算机外文翻译测试多态的关系的准则.doc
  16. 基于51单片机+DS1302时钟模块+LCD1602显示
  17. 两级缓存框架J2Cache的使用
  18. 学计算机如何护眼,长期看电脑如何保护眼睛 吃这些有效保护视力
  19. 前端清除缓存的集中方法
  20. 手机点击android出现N,“安卓N”登场,会给手机带来哪些新功能

热门文章

  1. 史密斯圆图matlab,用MATLAB程序实现Smith圆图的图解过程
  2. STM32 vcap引脚
  3. python 算法课件_分析《Python+TensorFlow机器学习实战》PDF代码课件+《Python深度学习》PDF代码张量...
  4. 深度学习入门之猫vs狗(超简单)
  5. Java算法面试题(005) 求n边形周长的k等分点坐标(今日头条)
  6. Java应用程序浏览器集成控件JxBrowser v7.18新版发布!
  7. XPS查看器(XPS Viewer)适用Win10系统安装说明
  8. Win10 安装 XPS查看器
  9. 修改整个app的字体
  10. 无线路由器分流时用迅雷下载限速时不能每位用户支持良好的信息交换