У меня есть следующие классы:Spark: .saveAsTextFile потери унаследованное поле для объекта Java
public final class Derived extends AbstractBase implements Serializable {
private static final long serialVersionUID = 1L;
private String fieldA
:
}
public abstract class AbstractBase {
protected List<String> sources = new ArrayList<String>();
public final String toJsonString() {
return (new Gson()).toJson(this);
}
@Override
public final String toString() {
return toJsonString();
}
:
}
Тогда в моей Спарк работы:
val myRDD: RDD[Derived] = input.map {
...
}.saveAsTextFile("myOutput")
Json строка каждого Derived
объекта в файле myOutput всегда отсутствует список sources
. Однако, если я вручную переместить
protected List<String> sources = new ArrayList<String>();
от AbstractBase
к Derived
класса, все работает отлично.
Кто-нибудь знает, почему унаследованное поле отсутствует во время метода Spark - saveAsTextfile?
Спасибо!
У вас есть репроектор? Я не думаю, что это проблема 'saveAsTextFile'. Вы можете использовать 'collect(). Foreach (println)', чтобы проверить, выводит ли он тот же результат. – zsxwing