2
spark에서 Kyro와 비즈니스 로직 및 모델 클래스가있는 클래스를 등록합니다.Spark - Kyro로 모델 객체를 등록하십시오 : java.lang.IllegalArgumentException : 클래스가 등록되지 않았습니다 :
public class KyroSerializer implements KryoRegistrator {
@Override
public void registerClasses(Kryo kryo) {
kryo.register(People.class);
kryo.register(Lookup.class);
}
}
모델 클래스 :
class people implements Serializable{
private static final long serialVersionUID = 1L; ...... }
public class Lookup implements Serializable{
private static final long serialVersionUID = 1L;
private String code1;
private String code2;
}
마지막으로 내 스파크 컨텍스트 :
sc.set ("스파크 나는 아래의 예외를
> Job aborted due to stage failure: Task 14 in stage 1.0 failed 4 times, > most recent failure: Lost task 14.3 in stage 1.0 (TID 90, **): > java.lang.IllegalArgumentException: Class is not registered: Object[] > Note: To register this class use: kryo.register(Object[].class); at > com.esotericsoftware.kryo.Kryo.getRegistration(Kryo.java:442) at > com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass(DefaultClassResolver.java:79) > at com.esotericsoftware.kryo.Kryo.writeClass(Kryo.java:472) at > com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:565) at > org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:296) > at > org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:239) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > > Driver stacktrace:
KYRO Registrtor를 얻을. kryo.registrator ", KyroSerializer.class.getName())