ich einen Fehler bin schlagen, wenn für RDDs in Spark-Jobs java Protokollpuffer Klassen als Objektmodell verwendet,Fehler mit Java-Protokoll-Puffer mit Kryo Serializer Spark, die Arrays von Strings haben
für meine Anwendung, meine, proto-Datei hat Eigenschaften, die String wiederholt werden. Zum Beispiel
message OntologyHumanName
{
repeated string family = 1;
}
Daraus die 2.5.0 Protoc Compiler generiert Java-Code wie
private com.google.protobuf.LazyStringList family_ = com.google.protobuf.LazyStringArrayList.EMPTY;
Wenn ich einen Scala Spark-Job ausführen, der die Kryo Serializer ich die folgende Fehlermeldung erhalten verwendet
Caused by: java.lang.NullPointerException
at com.google.protobuf.UnmodifiableLazyStringList.size(UnmodifiableLazyStringList.java:61)
at java.util.AbstractList.add(AbstractList.java:108)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:134)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:40)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:708)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125)
... 40 more
Derselbe Code funktioniert gut mit spark.serializer = org.apache.spark.serializer.JavaSerializer.
Meine Umgebung ist CDH Quickstart 5.5 mit JDK 1.8.0_60