So che questa è una domanda banale, ma non ho trovato la risposta su Internet.Come passare l'argomento del programma alla funzione principale nell'esecuzione di spark-submit con un JAR?
Sto cercando di eseguire una classe Java con la funzione main
con gli argomenti del programma (String[] args
).
Tuttavia, quando presento il processo utilizzando spark-submit
e passare gli argomenti del programma come avrei fatto con
java -cp <some jar>.jar <Some class name> <arg1> <arg2>
che non legge i arg
s.
Il comando ho provato a fare funzionare era
bin/spark-submit analytics-package.jar --class full.package.name.ClassName 1234 someargument someArgument
e questo dà
Error: No main class set in JAR; please specify one with --class
e quando ho provato:
bin/spark-submit --class full.package.name.ClassName 1234 someargument someArgument analytics-package.jar
ottengo
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)
Come posso passare questi argomenti? Cambiano frequentemente ad ogni esecuzione del lavoro e devono essere passati come argomenti.
Si suppone che tu passi gli argomenti dopo il barattolo. Vedi la documentazione sull'invio delle applicazioni Spark: http://spark.apache.org/docs/latest/submitting-applications.html –