我已经为spark写了一个java程序,但是我不能从命令行运行它。
我已经按照快速入门指南中给出的步骤进行了操作,但出现以下错误。请帮我解决这个问题。
下面是错误:
hadoopnod@hadoopnod:~/spark-1.2.1/bin$ ./run-example "SimpleApp " --master local /home/hadoopnod/Spark_Java/target/simple-project-1.0.jarjava.lang.ClassNotFoundException: org.apache.spark.examples.SimpleApp
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:342)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties发布于 2015-09-30 22:57:00
使用以下命令创建一个JAR文件。您可以在“target/ SimpleApp.class”文件夹中找到类文件。cd复制到此目录。
jar cfve file.jar SimpleApp.class将此JAR文件放入您的项目的目标目录中。这个JAR文件包含向Spark提交作业时SimpleApp类的依赖项。
cd到你的spark目录。我使用的是spark-1.4.0-bin-hadoop2.6。您的cmd如下所示。
spark-1.4.0-bin-hadoop2.6>使用spark Submit提交您的Spark程序。如果你有哈莎在另一个答案中解释过的结构,那么提供
--class org.apache.spark.examples.SimpleApp 否则
--class SimpleApp最后提交你的spark程序。
spark-1.4.0-bin-hadoop2.6>./bin/spark-submit --class SimpleApp --master local[2] /home/hadoopnod/Spark_Java/target/file.jar发布于 2015-02-19 22:26:04
脚本./run-example.sh用于执行发行版中包含的示例。要运行示例"SparkPi“,请执行以下操作...
> cd /apps/spark-1.2.0
> ./bin/run-example SparkPi如果你看看这个脚本是如何执行的,就会发现它只是一个新的用户友好的包装器,实际上调用了spark-submit。
下面是一个执行上面相同的"SparkPi“示例的示例,但使用的是spark-submit
> .bin/spark-submit --class org.apache.spark.examples.SparkPi --master local examples/target/spark-examples_2.10-1.2.0.jar您应该使用spark-submit来运行您自己的代码。
发布于 2015-02-20 09:24:18
ClassNotFoundException: org.apache.spark.examples.SimpleApp从上面的错误中,可以清楚地看出它找不到您正在尝试执行的类的原因。您是否将java项目捆绑到一个jar文件中。如果在创建jar文件时有任何其他依赖项,则还需要包含它们。
假设你有一个这样的项目结构
simpleapp
- src/main/java
- org.apache.spark.examples
-SimpleApp.java
- lib
- dependent.jars (you can put all dependent jars inside lib directory)
- target
- simpleapp.jar (after compiling your source)您可以使用任何构建工具或任何IDE将源代码捆绑到一个Jar文件中。之后,如果你已经将spark/bin目录添加到你的路径中。你可以从你的项目目录执行下面的命令。仅当SimpleApp.java中有依赖库时,才需要添加--jars $(echo lib/*.jar | tr‘',’)
spark-submit --jars $(echo lib/*.jar | tr ' ' ',' ) --class org.apache.spark.examples.SimpleApp --master local[2] target/simpleapp.jarhttps://stackoverflow.com/questions/28602944
复制相似问题