我使用maven为我的apache spark scala项目构建了* .jar文件。当我尝试执行主类时,在代码的某一行,它为类Exception in thread "main" java.lang.NoClassDefFoundError
提供了错误org.apache.spark.ml.recommendation.ALS
。
我按照以下方式运行spark-submit:
sudo -u hdfs /usr/bin/spark-submit --class
org.apache.spark.examples.ml.MyTest spark-examples-*.jar --rank 10 --path
/home/ubuntu/data
看起来它只找不到org.apache.spark.ml.recommendation.ALS
。我在类中有以下import语句:
package org.apache.spark.examples.ml
import java.util.Date
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.examples.mllib.AbstractParams
import org.apache.spark.ml.recommendation.ALS
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{Row, SQLContext}
import scopt.OptionParser
如何解决这个问题?
更新1:
我将maven-assebly
插件添加到pom.xml
以及assembly.xml
添加到文件夹resources
中。然后我成功地制作了mvn package
,但又遇到了同样的问题。
更新2:
jar -tvf spark-examples-1.5.3-SNAPSHOT-hadoop2.2.0.jar | grep "ALS"
2678 Mon May 23 13:11:44 CEST 2016 org/apache/spark/examples/ml/recommendation/MyFunc$ALSParams.class
答案 0 :(得分:0)
首先找出失败的原因。
1)班级失踪了吗?
2)或者是初始化问题。
要通过这种方式查明类是否可用运行命令jar -tvf <.jar> | grep "class name"
,您可以查看是否存在类文件或其初始化问题。