다음 질문을 따르십시오 : Avro serialisation cast error in ScalaAvro로 스칼라 케이스 클래스를 직렬화하는 방법은 무엇입니까?
Avro를 사용하여 Scala case
클래스를 serialize하는 가장 좋은 방법은 무엇입니까?
def serializeSubmapRecord(record: MyRecord): Array[Byte] = {
val out = new ByteArrayOutputStream()
val encoder = EncoderFactory.get.binaryEncoder(out, null)
val writer = new GenericDatumWriter[GenericRecord](avro_schema)
val r = new GenericData.Record(avro_schema);
r.put("my_number", 1);
writer.write(r, encoder)
encoder.flush
out.close
out.toByteArray
}
을 아 브로 스키마
{"namespace": "",
"type": "record",
"name": "MyRecord",
"fields": [
{"name": "my_number", "type": "int"}
]
}
그러나 나는 이런 식으로 뭔가하고 싶은 곳 :
case class MyRecord(my_number: Int)
val record = new MyRecord(1)
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
을} 여기
내가 지금 뭘하는지입니다코드의 마지막 비트는 링크 된 질문을 제외합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
어디에서'Pizza' 오는가? 그 라인이 어떤 것와도 상호 작용하는 것을 보지 못합니다 ... –
미안 해요, 샘플은 원래 붙여 넣기를 복사 할 때 MyRecord로 이름을 바꾼 Pizza라는 케이스 클래스를 사용했습니다 - 나는 지금 편집 할 것 하나를 놓친 것 같습니다. – monkjack