使用Maven的spark-submit ClassNotFound异常

时间:2016-10-05 12:05:58

标签: maven apache-spark spark-streaming

我意识到这个问题存在相关问题,但我无法让我的代码工作。

我在独立模式下运行Spark Streaming应用程序,我的Windows主机中有主节点,Ubuntu虚拟机中有一个worker。  问题出在这里:当我运行spark-submit时,就会显示出来:

 >spark-submit --master spark://192.168.56.1:7077 --class spark.example.Main  C:/Users/Manuel Mourato/xxx/target/ParkMonitor-1.0-SNAPSHOT.jar
Warning: Skip remote jar C:/Users/Manuel.
java.lang.ClassNotFoundException: spark.example.Main
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:175)
    at   org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:689)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我用Maven创建了这个jar文件,使用" package"在IntelliJ中。 这就是我设置SparkStreaming上下文的方式:

 SparkConf sparkConfiguration= new SparkConf().setAppName("ParkingDataAnalysis").setMaster("spark://192.168.56.1:7077");
 JavaStreamingContext sparkStrContext=new JavaStreamingContext(sparkConfiguration, Durations.seconds(1));

任何人都可以帮助我吗?非常感谢你。

1 个答案:

答案 0 :(得分:1)

您在文件夹名称中有空格,请添加引号(")然后重试

spark-submit --master spark://192.168.56.1:7077 --class spark.example.Main "C:/Users/Manuel Mourato/xxx/target/ParkMonitor-1.0-SNAPSHOT.jar"

另外,来自docs:pplication-jar: Path to a bundled jar including your application and all dependencies. The URL must be globally visible inside of your cluster, for instance, an hdfs:// path or a file:// path that is present on all nodes.

因此,请将您的文件复制到所有节点上的HDFS或相同的位置。在Linux和Windows的组合中很难;)我强烈建议设置HDFS

相关问题