Ich weiß, dass das eine triviale Frage ist, aber ich konnte die Antwort nicht im Internet finden.Wie übergebe ich Programm-Argument an die Hauptfunktion beim Ausführen von Spark-Submit mit einem JAR?
Ich versuche, eine Java-Klasse mit der main
-Funktion mit Programmargumenten (String[] args
) auszuführen.
Allerdings, wenn ich den Job mit spark-submit
und übergeben Programm Argumente vorbringen, wie ich mit
java -cp <some jar>.jar <Some class name> <arg1> <arg2>
zu tun wäre es nicht die arg
s liest.
Der Befehl, den ich laufen versucht war
bin/spark-submit analytics-package.jar --class full.package.name.ClassName 1234 someargument someArgument
und das gibt
Error: No main class set in JAR; please specify one with --class
und als ich versuchte:
bin/spark-submit --class full.package.name.ClassName 1234 someargument someArgument analytics-package.jar
I
bekommenWarning: 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)
Wie kann ich diese Argumente übergeben? Sie ändern sich bei jedem Joblauf häufig und müssen als Argumente übergeben werden.
Sie sollen die Argumente nach dem Glas übergeben. Siehe die Dokumentation zum Einreichen von Spark-Anwendungen: http://spark.apache.org/docs/latest/submitting-applications.html –