如何在使用JAR运行spark-submit时将程序参数传递给main函数?

我知道这是一个微不足道的问题,但我在互联网上找不到答案。

我试图使用程序参数( String[] args )运行带有main函数的Java类。

但是,当我使用spark-submit和pass程序参数提交作业时,就像我一样

 java -cp .jar    

它没有阅读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) 

我怎样才能传递这些论点? 它们在每次运行时都经常更改,并且需要作为参数传递。

在.jar文件之前传递的参数将是JVM的参数在jar文件传递给用户程序之后的参数。

 bin/spark-submit --class classname -Xms256m -Xmx1g something.jar someargument 

这里, s将等于someargument ,其中-Xms -Xmx被传递到JVM中。

 public static void main(String[] args) { String s = args[0]; } 

我在本教程中找到了正确的命令。

该命令应采用以下forms:

 bin/spark-submit --class full.package.name.ClassName analytics-package.jar someargument someArgument