Sé que esto es una pregunta trivial, pero no pude encontrar la respuesta en internet.

Estoy tratando de ejecutar una clase Java con el main función con argumentos de programa (String[] args).

Sin embargo, cuando tengo que presentar el trabajo mediante spark-submit y aprobar el programa de argumentos, como se haría con

java -cp <some jar>.jar <Some class name> <arg1> <arg2>

no lee el args.

El comando traté de correr era

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

y esto le da

Error: No main class set in JAR; please specify one with --class

y cuando traté de:

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

Puedo obtener

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)

¿Cómo puedo pasar estos argumentos? Ellos cambian con frecuencia en cada ejecución del trabajo, y necesitan ser pasados como argumentos.

Se supone que tienes que pasar los argumentos después de la jarra. Consulte la documentación de la presentación de la Chispa de aplicaciones: spark.apache.org/docs/latest/submitting-applications.html

OriginalEl autor Eric Na | 2016-03-16

2 Comentarios

  1. 15

    Argumentos pasados antes de el .archivo jar serán los argumentos para la JVM, donde son argumentos después de el archivo jar será transmitir a los usuarios del programa.

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

    Aquí, s será igual a someargument, donde el -Xms -Xmx se pasan a la JVM.

    public static void main(String[] args) {
    
        String s = args[0];
    }
    está usted seguro de eso ? Estoy usando chispa 1.6.2 en el hilo y tengo todos los argumentos include –class classname … me llego todo

    OriginalEl autor Matt Clark

  2. 7

    He encontrado el comando correcto de este tutorial.

    El comando debe ser de la forma:

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

    OriginalEl autor Eric Na

Dejar respuesta

Please enter your comment!
Please enter your name here