分享

spark ClassNotFoundException

maven项目,语言用的scala,AnalysisSimulation模块依赖commons模块,打包之后运行报ClassNotFoundException: analysis.DangerLevelTop10肯定没有拼错,并且解压jar包可以找到analysis.DangerLevelTop10类。求大神解决,困扰我很多天了





idea.png

代码没有问题,可以正常运行,但还是贴出来参考
[mw_shl_code=scala,true]package analysis

import analysis.AnalysisSimulation.getSourceIp2CountRDD
import commons.conf.ConfigurationManager
import model.{BizWafBean, MaxSourceIp}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{SaveMode, SparkSession}

object DangerLevelTop10 {
  def main(args: Array[String]): Unit = {
    val startTime = System.currentTimeMillis()

    val sparkConf = new SparkConf().setMaster("local
  • ").setAppName("analyse_optimize")
        sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

        val sparkContext = new SparkContext(sparkConf)

        val sparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

        //读取hadoop或者mysql中的数据
        val cloudWafAction = getCloudWafAction(sparkSession)
        //    cloudWafAction.persist(StorageLevel.MEMORY_AND_DISK_SER)


        // 需求二:source_ip 攻击IP最多
        val sourceip2CountRDD = getSourceIp2CountRDD(cloudWafAction: RDD[(BizWafBean)]): RDD[(String, Long)]
        val maxSourceIp = sourceip2CountRDD.sortBy(_._2, false).take(1)
        val maxSourceIp2Count = maxSourceIp.map(item => MaxSourceIp(item._1, item._2))
        val maxSourceIp2CountRDD = sparkContext.makeRDD(maxSourceIp2Count)
        import sparkSession.implicits._
        maxSourceIp2CountRDD.toDF().write
          .format("jdbc")
          .option("url", ConfigurationManager.config.getString("jdbc.url"))
          .option("dbtable", ConfigurationManager.config.getString("mysql.cloud_defense_test_maxsourceip"))
          .option("user", ConfigurationManager.config.getString("jdbc.user"))
          .option("password", ConfigurationManager.config.getString("jdbc.password"))
          .mode(SaveMode.Overwrite)
          .save()
        val endTime=System.currentTimeMillis()
        println(" spend time "+(endTime-startTime)/1000)
      }


      def getCloudWafAction(sparkSession: SparkSession): RDD[BizWafBean] = {
        import sparkSession.implicits._
        val cloudWafActionDF = sparkSession.read.parquet("hdfs://192.168.1.112:9000/user/spark/data/parquet/bizWafhistory/part-00000-01911ebb-b750-4021-a2eb-6fc734e0a34c-c000.snappy.parquet")
        cloudWafActionDF.as[BizWafBean].rdd

      }
    }[/mw_shl_code]
    帮我解决这个问题,发5元红包表示感谢



  • 已有(4)人评论

    跳转到指定楼层
    jixianqiuxue 发表于 2018-8-3 08:16:52

    回帖奖励 +1 云币

    下面建议楼主最好按照下面步骤:
    1.去掉package analysis
    2.Main class改为DangerLevelTop10

    打包步骤参考此文:
    如何在IDEA 环境下打包spark源码提交到集群
    http://www.aboutyun.com/forum.php?mod=viewthread&tid=14666

    步骤千万不要错了

    回复

    使用道具 举报

    希孟100 发表于 2018-8-3 09:45:21
    jixianqiuxue 发表于 2018-8-3 08:16
    下面建议楼主最好按照下面步骤:
    1.去掉package analysis
    2.Main class改为DangerLevelTop10

    我试了,还是不行,并且我就是按照你发的地址弄的,还是不可以
    回复

    使用道具 举报

    w517424787 发表于 2018-8-3 14:21:17
    你这个用maven打包的方式试试!
    回复

    使用道具 举报

    sstutu 发表于 2018-8-3 15:18:14
    本帖最后由 sstutu 于 2018-8-3 15:20 编辑
    希孟100 发表于 2018-8-3 09:45
    我试了,还是不行,并且我就是按照你发的地址弄的,还是不可以

    这个别人已经无能为力了
    文章操作肯定是没有问题的
    所以楼主需要思考自己的操作和环境,肯定是因为自己某个细节疏忽、或则错误的理解导致的

    2.如果实在找不出,另起炉灶,尝试其他的代码打包比如wordcount,然后看看是否可以成功。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐上一条 /2 下一条