Spark ClassNotFoundException $$anonfun$2

Spark ClassNotFoundException $$anonfun$2

1. 软件环境:

软件版本
Spark 原生1.6.0
Hadoop 原生2.6.5

2. 应用场景&问题描述

运行任务的过程中,指定主类,比如a.b.c.Test, 那么主类是可以被调用的。比如已经运行到a.b.c.Test中的代码,但是接着会报诸如:ClassNotFound : a.b.c.Test$$anonfun$1这样的异常,如下所示: 

而通过把a.b.c.Test所在的jar包解压,可以看到其中是有诸如a.b.c.Test$$anonfun$1.class 这样的文件的。通过反编译软件可以看到这个类是a.b.c.Test中的一个函数,这样就很奇诡了。主类Test找得到,但是和其同一个文件的函数的类反而找不到。

3. 解决办法

由于是报类找不到,而且定位是在Executor执行的时候,所以,尝试把jar包加入executor的Classpath中,在代码中添加:

sparkConf.set("spark.executor.extraClassPath","path/to/a.b.c.Test/.jar");

而且,其实已经设置了spark.jars:

sparkConf.set("spark.jars","hdfs://path/to/a.b.c.Test/.jar")
原文地址:https://www.cnblogs.com/itboys/p/9332985.html