¿Cómo puedo pasar el programa argumento a la función principal en la ejecución de chispa a presentar con un FRASCO?

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 Kommentare

  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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea