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

Java 在使用JAR运行spark submit时,如何将程序参数传递给main函数?,java,apache-spark,Java,Apache Spark,我知道这是一个微不足道的问题,但我在网上找不到答案 我正在尝试使用带有程序参数(String[]args)的main函数运行Java类 但是,当我使用spark提交作业时,我会像使用spark提交一样提交并传递程序参数 java -cp <some jar>.jar <Some class name> <arg1> <arg2> 这就给了 Error: No main class set in JAR; please specify one wi

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

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

但是,当我使用
spark提交作业时,我会像使用spark提交一样提交
并传递程序参数

java -cp <some jar>.jar <Some class name> <arg1> <arg2>
这就给了

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 
我明白了


我如何传递这些参数?它们在每次运行作业时都会频繁更改,需要作为参数传递。

我从中找到了正确的命令

命令的格式应为:

bin/spark-submit --class full.package.name.ClassName analytics-package.jar someargument someArgument
在.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];
}
spark submit--class SparkWordCount--master warn--jars,
sparkwordcount-1.0.jar/user/user01/input/alice.txt/user/user01/output

第一个无法识别的参数被视为primaryResource(本例中为jar文件)。结帐

primaryResource后面的所有参数都被视为应用程序的参数。结帐


为了更好地理解参数是如何解析的,请签出。上述两个方法都是从这个方法调用的

您应该在jar之后传递参数。请参阅有关提交Spark应用程序的文档:您确定吗?我在Thread上使用spark 1.6.2,我得到的所有参数包括--class classname。。。我什么都有
bin/spark-submit --class classname -Xms256m -Xmx1g something.jar someargument
public static void main(String[] args) {

    String s = args[0];
}
spark-submit --class SparkWordCount --master yarn --jars <jar1.jar>,<jar2.jar>
sparkwordcount-1.0.jar /user/user01/input/alice.txt /user/user01/output