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

Eri*_* Na 18 java apache-spark

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

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

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

java -cp <some jar>.jar <Some class name> <arg1> <arg2>
Run Code Online (Sandbox Code Playgroud)

它不读args.

我试过的命令是

bin/spark-submit analytics-package.jar --class full.package.name.ClassName 1234 someargument someArgument
Run Code Online (Sandbox Code Playgroud)

这给了

Error: No main class set in JAR; please specify one with --class
Run Code Online (Sandbox Code Playgroud)

当我尝试时:

bin/spark-submit --class full.package.name.ClassName 1234 someargument someArgument analytics-package.jar 
Run Code Online (Sandbox Code Playgroud)

我明白了

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)
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*ark 27

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

bin/spark-submit --class classname -Xms256m -Xmx1g something.jar someargument
Run Code Online (Sandbox Code Playgroud)

这里,s将相等someargument,而-Xms -Xmx传递到JVM.

public static void main(String[] args) {

    String s = args[0];
}
Run Code Online (Sandbox Code Playgroud)


Eri*_* Na 8

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

该命令应采用以下形式:

bin/spark-submit --class full.package.name.ClassName analytics-package.jar someargument someArgument
Run Code Online (Sandbox Code Playgroud)