Каким образом статическая переменная-член распространяется среди работников в Spark? - PullRequest
0 голосов
/ 30 ноября 2018
public class MapMatchingMain {

    public static void main(String[] args) {
        ...

        MapMatching mapMatching = new MapMatching(hopper, opts);

        JavaRDD<String> matchedTraces = traceData.map(
                new Function<String, String>() {
                    @Override
                    public String call(String s) throws Exception {
                        return singleTraceMatch(getTraceFromString(s), mapMatching));
                    }
                }
        );
        }
    }

, когда я создаю экземпляр mapMatching в методе main(), я получаю ошибку, что

Исключение в потоке "main" org.apache.spark.SparkException:Задача не сериализуема

public class MapMatchingMain {

    private static MapMatching mapMatching = new MapMatching();

    public static void main(String[] args) {
        ...
        JavaRDD<String> matchedTraces = traceData.map(
                new Function<String, String>() {
                    @Override
                    public String call(String s) throws Exception {
                        return singleTraceMatch(getTraceFromString(s));
                    }
                }
        );
        }
    }

Если я создаю экземпляр экземпляра mapMatching как статическую переменную-член класса MapMatchingMain, у него нет проблем.

Я прочитал несколько ответовсказал, что значение статического поля не было сериализовано.Так как же это распространяется на каждого работника в искре?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...