Earlier, I was using JSON in our project so one of our attribute data looks
like below in JSON format. Below is the attribute `e3` data in JSON format.
{"lv":[{"v":{"prc":9.97}},{"v":{"prc":5.56}},{"v":{"prc":21.48}}]}
Now, I am planning to use Apache Avro for our Data Serialization format.
So I decided to design the Avro schema for the above attributes data. And I
came up with the below design.
{
"namespace": "com.avro.test.AvroExperiment",
"type": "record",
"name": "AVG_PRICE",
"doc": "AVG_PRICE data",
"fields": [
{"name": "prc", "type": {"type": "array", "items": "double"}}
]
}
Now, I am not sure whether the above schema looks right or not
corresponding to the values I have in JSON? Can anyone help me on that?
Assuming the above schema looks correct, if I try to serialize the data
using the above avro schema, I always get the below error-
double[] nums = new double[] { 9.97, 5.56, 21.48 };
Schema schema = new
Parser().parse((AvroExperiment.class.getResourceAsStream("/aspmc.avsc")));
GenericRecord record = new GenericData.Record(schema);
record.put("prc", nums);
GenericDatumWriter<GenericRecord> writer = new
GenericDatumWriter<GenericRecord>(schema);
ByteArrayOutputStream os = new ByteArrayOutputStream();
Encoder e = EncoderFactory.get().binaryEncoder(os, null);
// this line gives me exception..
writer.write(record, e);
Below is the exception, I always get-
* Exception in thread "main" java.lang.ClassCastException: [D
incompatible with java.util.Collection*
Any idea what wrong I am doing here?