2013-07-03 3 views
1

데이터를 protobuff 형식으로 serialize하고이를 Avro serialization으로 변환하려고합니다.프로토 타입을 avro로 변환

나는 문제가 다시 protobuf 객체 인 o를 수득

ProtoTest.Msg msg = buildMessage(); 
    ProtobufData protobufData = ProtobufData.get(); 
    Schema protoSchema = protobufData.getSchema(ProtoTest.Msg.class); 
    Object o = protobufData.newRecord(msg, protoSchema); 

사용하여 프로토 데이터를 판독 할 없다. 지금은 같은 스키마

GenericDatumWriter genericDatumWriter = new GenericDatumWriter(protoSchema); 
    OutputStream out = new ByteArrayOutputStream(); 
    Encoder encoder = EncoderFactory.get().binaryEncoder(out, null); 
    genericDatumWriter.write(o, encoder); 

그러나 위의 코드를 실행하는 브로으로 을 작성하려면이

java.lang.ClassCastException: example.avro.ProtoTest$Msg cannot be cast to org.apache.avro.generic.IndexedRecord 
at org.apache.avro.generic.GenericData.getField(GenericData.java:526) 
at org.apache.avro.generic.GenericData.getField(GenericData.java:541) 
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:104) 
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:66) 
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:58) 
at hermes.mediationOrchestrator.AvroFileWriteTest.testWriter3(AvroFileWriteTest.java:115) 

가 어떻게 프로토 객체를 변형 할 수 쓰기 방법에서 다음 예외가 발생합니다 avro 객체로?

감사합니다. 로넨.

+0

안녕 Ronen에, 당신은이 문제를 극복 할 수있는 방법을 발견했다? 나는 같은 것을 경험하고있다. – forhas

답변

관련 문제