我知道这是一个微不足道的问题,但我无法在互联网上找到答案。
我正在尝试使用带有程序参数( String[] args
)的 main
函数运行 Java 类。
但是,当我使用 spark-submit
提交作业并像我一样传递程序参数时
java -cp <some jar>.jar <Some class name> <arg1> <arg2>
它不读取 arg
s。
我尝试运行的命令是
bin/spark-submit analytics-package.jar --class full.package.name.ClassName 1234 someargument someArgument
这给了
Error: No main class set in JAR; please specify one with --class
当我尝试时:
bin/spark-submit --class full.package.name.ClassName 1234 someargument someArgument analytics-package.jar
我得到
Warning: Local jar /mnt/disk1/spark/1 does not exist, skipping.
java.lang.ClassNotFoundException: com.relcy.analytics.query.QueryAnalytics
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:176)
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:183)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:208)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:122)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我怎样才能传递这些论点?它们在作业的每次运行中经常更改,并且需要作为参数传递。
原文由 Eric 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 .jar 文件 之前 传递的参数将是 JVM 的参数,而在 jar 文件 之后 传递的参数将传递给用户的程序。
这里,
s
将等于someargument
,而-Xms -Xmx
被传递到JVM。