[解決] java.lang.ClassNotFoundException:$$anonfun$1

本文探讨了在使用IDEA与Maven进行Spark App本地开发时遇到的java.lang.ClassNotFoundException问题,并提供了两种解决方案:一是调整为本地运行模式;二是将程序打包上传到集群并使用spark-submit执行。

 

在使用idea + maven 進行spark app 本地(windows)開發的過程中,遇到了java.lang.ClassNotFoundException:$$anonfun$1 .

 

val conf = new SparkConf
conf.setMaster(spark://<ip>:7077) 

 

 

經過查閲資料,發現引起這個問題的原因是因爲jvm 沒有把最新的代碼全部讀取。因爲我是在本地開發的,所以最新代碼在local, 而master 我是指向了spark cluster, 因而導致在spark cluster 運行時 jvm 沒有得到最新的代碼。

 

解決方案有2個:

1.  在local , setMaster(local[*]) 或者 setMaster(local[2]) // 2表示多少核可以使用

2.  在cluster, 把程序打包上傳server ,然後通過spark-submit 執行。如:

spark-submit --class <main class>  --master spark://<ip>:7077 /path/to/app.jar

 

 

[參考]

https://issues.apache.org/jira/browse/SPARK-3203

http://stackoverflow.com/questions/33222045/classnotfoundexception-anonfun-when-deploy-scala-code-to-spark

uang-pei-ji@huang-pei-ji:~$ scala -version Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL huang-pei-ji@huang-pei-ji:~$ scala Welcome to Scala 2.11.12 (OpenJDK 64-Bit Server VM, Java 21.0.8). Type in expressions for evaluation. Or try :help. Exception in thread "Thread-1" java.lang.NoClassDefFoundError: org/fusesource/jansi/AnsiOutputStream at jline.internal.Ansi.stripAnsi(Ansi.java:28) at jline.console.ConsoleReader.setPrompt(ConsoleReader.java:499) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2425) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2378) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2366) at scala.tools.nsc.interpreter.jline.InteractiveReader.readOneLine(JLineReader.scala:59) at scala.tools.nsc.interpreter.InteractiveReader$class.readLine(InteractiveReader.scala:38) at scala.tools.nsc.interpreter.jline.InteractiveReader.readLine(JLineReader.scala:27) at scala.tools.nsc.interpreter.SplashReader.readLine(InteractiveReader.scala:142) at scala.tools.nsc.interpreter.SplashLoop.run(InteractiveReader.scala:71) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.lang.ClassNotFoundException: org.fusesource.jansi.AnsiOutputStream at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ... 11 more Failed to initialize compiler: NoClassDefFoundError. This is most often remedied by a full clean and recompile. Otherwise, your classpath may continue bytecode compiled by different and incompatible versions of scala. java.lang.NoClassDefFoundError: org/fusesource/jansi/AnsiOutputStream at jline.internal.Ansi.stripAnsi(Ansi.java:28) at jline.console.ConsoleReader.setPrompt(ConsoleReader.java:499) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2425) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2378) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2366) at scala.tools.nsc.interpreter.jline.InteractiveReader.readOneLine(JLineReader.scala:59) at scala.tools.nsc.interpreter.InteractiveReader$class.readLine(InteractiveReader.scala:38) at scala.tools.nsc.interpreter.jline.InteractiveReader.readLine(JLineReader.scala:27) at scala.tools.nsc.interpreter.ILoop.readOneLine(ILoop.scala:413) at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:425) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:993) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:891) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:891) at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97) at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:891) at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:74) at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87) at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) Caused by: java.lang.ClassNotFoundException: org.fusesource.jansi.AnsiOutputStream ... 20 more
最新发布
10-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值