栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

有关java.lang.ClassNotFoundException报错的总结

有关java.lang.ClassNotFoundException报错的总结

目录

一、查看自己的运行入口

二、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.conf

import org.slf4j.LoggerFactory


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)

  
  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) => conf
      case 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博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号