在使用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