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
, у него нет проблем.
Я прочитал несколько ответовсказал, что значение статического поля не было сериализовано.Так как же это распространяется на каждого работника в искре?