我尝试按照此处的教程:http://spark.apache.org/docs/latest/quick-start.html#self-contained-applications。使用命令sbt package
,我获得一个空罐子。后续命令:
spark-submit --class SimpleApp --master local[4] target/scala-2.11/simple-project_2.11-1.0.jar
结果:
java.lang.ClassNotFoundException: SimpleApp
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.spark.util.Utils$.classForName(Utils.scala:225)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:693)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我使用了教程中描述的正确布局,根目录为simple.sbt
,src/scala/SimpleApp.scala
为源代码。
我的配置是Windows 10,Scala,Hadoop,Spark和sbt二进制文件来自各自的网站。
答案 0 :(得分:0)
sbt强制执行严格的文件夹结构,我忘记了main
中间目录。以前我只使用Eclipse以递归方式扫描src
中的所有文件夹。
在目录结构中添加中间main
文件夹允许编译并按预期运行:
src
main
scala
SimpleApp.scala
中想到了这一点