开发者社区 问答 正文

用idea调试Spark时,遇到java.lang.ClassNotFoundE?400报错

写了段简单的代码测试下,连接虚拟机上的Spark standalone:

object SparkHbase {
  def main(args: Array[String]) {
    System.setProperty("spark.executor.memory", "512m")
    System.setProperty("spark.driver.memory", "512m")
    val conf = new SparkConf().setAppName("spark-hbase")
      .setMaster("spark://ubuntu:7077")
      .setJars(Array("E:\\javawebapps\\SparkRecommerSystem\\out\\artifacts\\sparkrecommersystem_jar\\sparkrecommersystem.jar"))
//          .setMaster("local[5]")
    val sc = new SparkContext(conf)
    sc.addJar("E:\\javawebapps\\SparkRecommerSystem\\out\\artifacts\\sparkrecommersystem_jar\\sparkrecommersystem.jar")
//
    val data = Array(1, 2, 3, 4, 5, 6)
    val dataRDD = sc.parallelize(data)
    dataRDD.foreach(println)

    sc.stop()

  }
}

windows下与虚拟机网络上是互通的,同时我也调用了SparkConf.setJars(),却依旧无法找到我写的这个主类编译后的一个类(SparkHbase$$anonfun$main$1)。

尝试打成Jar包后,使用spark-submit提交,也同样报错。

展开
收起
爱吃鱼的程序员 2020-06-08 16:40:19 566 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    driver报错还是executor报错,另外master设置了两遍sparkconf里面存的都是url,没有实际存jar包,我一般用nfs解决这个问题,让本地目录一致executor运行task的时候也要加载jar回复<aclass="referer"target="_blank">@GestureWei:不对吖,不应该是driver访问到就好了么,然后由driver发送给executor回复<aclass="referer"target="_blank">@GestureWei:按您的说法,我该怎么做??我是在windows下连接虚拟机上的sparkstandalone回复<aclass="referer"target="_blank">@fshjq:手机没看清楚那个注释,executor报错是因为提交的jar必须在相同的位置,也就是说这个路径在各个节点上都能访问到

    楼主 我也遇到了同样的问题 请问你最后解决了吗

    2020-06-08 16:40:31
    赞同 展开评论