В моем коде Spark я пытаюсь создать IndexedRowMatrix из файла csv. Тем не менее, я получаю следующее сообщение об ошибке:Spark NotSerializableException
Exception in thread "main" org.apache.spark.SparkException: Task not serializable
...
Caused by: java.io.NotSerializableException: org.apache.spark.api.java.JavaSparkContext
Вот мой код:
sc = new JavaSparkContext("local", "App",
"/srv/spark", new String[]{"target/App.jar"});
JavaRDD<String> csv = sc.textFile("data/matrix.csv").cache();
JavaRDD<IndexedRow> entries = csv.zipWithIndex().map(
new Function<scala.Tuple2<String, Long>, IndexedRow>() {
/**
*
**/
private static final long serialVersionUID = 4795273163954440089L;
@Override
public IndexedRow call(Tuple2<String, Long> tuple)
throws Exception {
String line = tuple._1;
long index = tuple._2;
String[] strings = line.split(",");
double[] doubles = new double[strings.length];
for (int i = 0; i < strings.length; i++) {
doubles[i] = Double.parseDouble(strings[i]);
}
Vector v = new DenseVector(doubles);
return new IndexedRow(index, v);
}
});
Вопросы просят отладки помощи должны (1) показать * всю * самодостаточную программу, демонстрирующую проблема, (2) показать трассировку * всего * стека и (3) указать линию, в которой происходит исключение. – kdgregory
Тем не менее, я уверен, что 'sc' является переменной-членом содержащего класса. Не делайте этого, просто сделайте его локальной переменной *, как и все примеры в документации Spark *. – kdgregory