我是 Spark 和 Scala 的新手,但希望这不是一个多余/愚蠢的问题 - 我还没有找到答案。
我用 sbt-assembly 工具编译了一个胖 jar, list 文件包含 MainClass: com.package.MyMainClass
行。但是,spark-submit 仍然要求我使用 --class
参数来定义主类。从 this Spark configuration page ,我收集到 spark-submit 从 conf/spark-defaults.conf
文件中获取其配置详细信息。我的其他属性( spark.master
、 spark.app.name
)似乎在没有命令行参数的情况下加载得很好,但我无法找到在此文件中指定项目主类的方法。我随机尝试了 spark.class
main.class
和 class
之类的东西,但显然在黑暗中刺伤不太好。
有任何想法吗?当 spark-submit MyJar.jar
如此干净时,我想避免使用非常难看的脚本将应用程序部署到集群。谢谢。
最佳答案
查看 org.apache.spark.deploy.SparkSubmitArguments.scala
here 的源代码,它看起来应该选择您的 Main-Class manifest 属性:
mainClass = jar.getManifest.getMainAttributes.getValue("Main-Class")
我还没有测试过这个,但尝试用“Main-Class”替换“MainClass”。
关于scala - 使用不带 --class 参数的 spark-submit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24921618/