Scala中的Avro序列化转换错误
我是Scala和Avro的新手,我只是想序列化一个Scala中的Avro序列化转换错误,scala,avro,Scala,Avro,我是Scala和Avro的新手,我只是想序列化一个案例类 case class MyRecord(my_number: Int) 这应该不容易 def serializeSubmapRecord(record: MyRecord): Array[Byte] = { val out = new ByteArrayOutputStream() val encoder = EncoderFactory.get.binaryEncoder(out, null) val wr
案例类
case class MyRecord(my_number: Int)
这应该不容易
def serializeSubmapRecord(record: MyRecord): Array[Byte] = {
val out = new ByteArrayOutputStream()
val encoder = EncoderFactory.get.binaryEncoder(out, null)
val writer = new GenericDatumWriter[MyRecord](avro_schema)
writer.write(record, encoder)
encoder.flush
out.close
out.toByteArray
}
其中我获得了avro_模式
as
val avro_my_schema = scala.io.Source.fromFile("my_schema.avsc").mkString
val avro_schema = new Parser().parse(avro_my_schema)
它可以编译,但一经执行我就
[error] (run-main-0) java.lang.ClassCastException: Submap cannot be cast to org.apache.avro.generic.IndexedRecord
java.lang.ClassCastException: Submap cannot be cast to org.apache.avro.generic.IndexedRecord
at org.apache.avro.generic.GenericData.getField(GenericData.java:666)
at org.apache.avro.generic.GenericData.getField(GenericData.java:681)
at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:151)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:143)
at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:60)
...
Avro模式(my_schema.avsc
)是
任何帮助都将不胜感激。我的模式.avsc的内容是什么?@Jubobs我更新了问题。谢谢这毁了我的夜晚:(我的模式avsc的内容是什么?@Jubobs我更新了问题。谢谢这毁了我的夜晚:(
{"namespace": "",
"type": "record",
"name": "MyRecord",
"fields": [
{"name": "my_number", "type": "int"}
]
}