У меня возникает проблема с искровыми и статическими переменными. У меня есть класс конфигурации с некоторыми статическими переменными, которые я инициализирую из файла свойств во время выполнения.Статическая переменная внутри искровой работы -Java
System.out.println("Outside : "+ActiveMQConfig.HOST_ADDRESS);
rePartition.foreachRDD(new Function<JavaRDD<String>, Void>() {
public Void call (JavaRDD<String> rdd) throws Exception
{
rdd.map(new Function<String, String>() {
public String call (String line) throws Exception
{
System.out.println("Inside :" + ActiveMQConfig.HOST_ADDRESS);
return null;
}
}).count();
return null;
}
});
ssc.remember(new Duration(1 * 60 * 1000));
ssc.start();
Значение по умолчанию для ActiveMQConfig.HOST_ADDRESS
является localhost
и я устанавливаю некоторые IP из файла свойств во время выполнения.
Первая система выходит из печати ip Outside : ip
, но система внутри метода карты отображает значение по умолчанию Inside :localhost
. Что я здесь делаю неправильно? мне нужно транслировать все переменные, которые я хочу использовать внутри искры? Может ли кто-нибудь указать мне правильное направление?
Спасибо!
Вероятно, не так полезный ответ: можно ли избежать «статический» в вашем коде? Очень часто люди думают, что введение глобального состояния через статику - хорошая идея; но очень часто ... это не требуется; и вызывает проблемы в долгосрочной перспективе. – GhostCat
@ Jägermeister Извините, я не могу сделать конфигурационную переменную нестационарной переменной, поскольку я инициализирую эти переменные один раз и использую в разных частях приложения. –
передают файл свойств с опцией -files с использованием spark-submit? – urug