Cómo obtener Spark ApplicationID usando Main Class y user

Estoy usando Hadoop 2.0 con Cloudera y estoy probando un programa Java que verificará si un ID de aplicación Spark en particular se está ejecutando o no y tomará medidas adicionales.

Tengo información de clase principal y usuario (cuenta) que activó una aplicación Spark en particular.

Soy consciente de lo siguiente, pero ¿hay alguna API de Java que pueda ayudar a analizar y combinar usando el nombre de clase principal y el nombre de usuario?

yarn application -list

¿Hay alguna forma de que podamos obtener el ID de aplicación de una aplicación de chispa en ejecución utilizando Main Class e información de usuario en otro programa Java?

[EDITAR] Una forma de hacerlo es emitir el siguiente comando:

yarn application -list -appStates RUNNING | grep $application_name | grep $user | cut -f 1

Si hay alguna API de Java que pueda simplificarse, compártala.

[EDITAR] El comando anterior está bien, sin embargo, intenté con YarnClient como se muestra a continuación:

clase pública SomeCheck {

    public boolean run(String account, String appName) throws YarnException, IOException {




        SparkContext sc = new SparkContext(new SparkConf().setMaster("yarn").setAppName("SomeCheck"));
        YarnConfiguration conf = new YarnConfiguration(SparkHadoopUtil.get().newConfiguration(sc.getConf()));

        YarnClient yarnClient = YarnClient.createYarnClient();
        yarnClient.init(conf);
        yarnClient.start();
        EnumSet<YarnApplicationState> states =
                  EnumSet.of(YarnApplicationState.ACCEPTED, YarnApplicationState.RUNNING);

        List<ApplicationReport> applications = yarnClient.getApplications(states);


        for (ApplicationReport application : applications) {
               if ((application.getUser() == account) & (application.getName() == appName)) return true;
        }

        return false;

    }

}

Está fallando al señalar SparkContext sc = new SparkContext(new SparkConf().setMaster("yarn").setAppName("SomeCheck"));

Error:

 ERROR spark.SparkContext: Error initializing SparkContext.
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'

¿Hay algo incorrecto en el código?

Respuesta 1

Puede obtener la identificación de la aplicación en el código de la aplicación de chispa actual.

Aquí está el fragmento de código de muestra (Scala) Java también tiene la misma API.

// create spark configuration
SparkConf conf = new SparkConf().setMaster("local");
conf.set("spark.app.name", "test");

// create a spark context
SparkContext sc = new SparkContext(conf);

// get the application id
String appId = sc.applicationId();

// print the application id
System.out.println("Application id:  " + appId);

// stop the spark context
sc.stop();

Por favor intente esto.

Respuesta: 2

Tengo la siguiente pregunta: tengo que usar la siguiente función del SDK de la impresora BT: puerto StarIOPort = nulo; byte [] texttoprint = nuevo byte [] {0x1b, 0x40, 0x1b, 0x74,0x0D, (byte) 0x91, (byte) ...

Tengo un problema para almacenar datos en este hashmap, estoy programando en Java. Mi sistema consta de algunos chats, en el mapa hash tengo que insertar chats como índices y la lista de usuarios que están conectados a ...

En mi aplicación, tengo el problema de que a veces las instrucciones SELECT se ejecutan en una excepción java.sql.SQLException: Lock excede el tiempo de espera; intente reiniciar la excepción de transacción. Lamentablemente no puedo crear un ...

Solo quiero descubrir dispositivos periféricos cuando inicio mi descubrimiento de dispositivos Bluetooth, mi aplicación no debe descubrir / mostrar otros dispositivos. ¿Es esto posible? así es como estoy buscando dispositivos ...