You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Nicolas PHUNG (JIRA)" <ji...@apache.org> on 2015/04/08 19:05:14 UTC
[jira] [Updated] (AVRO-1661) Schema Evolution not working
[ https://issues.apache.org/jira/browse/AVRO-1661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nicolas PHUNG updated AVRO-1661:
--------------------------------
Description:
This is the Avro Schema (OLD) I was using to write Avro binary data before:
{noformat}
{
"namespace": "com.hello.world",
"type": "record",
"name": "Toto",
"fields": [
{
"name": "a",
"type": [
"string",
"null"
]
},
{
"name": "b",
"type": "string"
}
]
}
{noformat}
This is the Avro Schema (NEW) I'm using to read the Avro binary data :
{noformat}
{
"namespace": "com.hello.world",
"type": "record",
"name": "Toto",
"fields": [
{
"name": "a",
"type": [
"string",
"null"
]
},
{
"name": "b",
"type": "string"
},
{
"name": "c",
"type": "string",
"default": "na"
}
]
}
{noformat}
However, I can't read the old data with the new Schema. I've got the following errors :
{noformat}
15/04/08 17:32:22 ERROR executor.Executor: Exception in task 0.0 in stage 3.0 (TID 3)
java.io.EOFException
at org.apache.avro.io.BinaryDecoder.ensureBounds(BinaryDecoder.java:473)
at org.apache.avro.io.BinaryDecoder.readInt(BinaryDecoder.java:128)
at org.apache.avro.io.BinaryDecoder.readString(BinaryDecoder.java:259)
at org.apache.avro.io.BinaryDecoder.readString(BinaryDecoder.java:272)
at org.apache.avro.io.ValidatingDecoder.readString(ValidatingDecoder.java:113)
at org.apache.avro.generic.GenericDatumReader.readString(GenericDatumReader.java:353)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:157)
at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193)
at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142)
at com.miguno.kafka.avro.AvroDecoder.fromBytes(AvroDecoder.scala:31)
{noformat}
>From my understanding, I should be able to read the old data with the new schema that contains a new field with a default value. But it doesn't seem to work. Am I doing something wrong ?
was:
This is the Avro Schema (OLD) I was using to write Avro binary data before:
{noformat}
{
"namespace": "com.hello.world",
"type": "record",
"name": "Toto",
"fields":
{
"name": "a",
"type": [
"string",
"null"
]
},
{
"name": "b",
"type": "string"
}
]
}
{noformat}
This is the Avro Schema (NEW) I'm using to read the Avro binary data :
{noformat}
{
"namespace": "com.hello.world",
"type": "record",
"name": "Toto",
"fields":
{
"name": "a",
"type": [
"string",
"null"
]
},
{
"name": "b",
"type": "string"
},
{
"name": "c",
"type": "string",
"default": "na"
}
]
}
{noformat}
However, I can't read the old data with the new Schema. I've got the following errors :
{noformat}
15/04/08 17:32:22 ERROR executor.Executor: Exception in task 0.0 in stage 3.0 (TID 3)
java.io.EOFException
at org.apache.avro.io.BinaryDecoder.ensureBounds(BinaryDecoder.java:473)
at org.apache.avro.io.BinaryDecoder.readInt(BinaryDecoder.java:128)
at org.apache.avro.io.BinaryDecoder.readString(BinaryDecoder.java:259)
at org.apache.avro.io.BinaryDecoder.readString(BinaryDecoder.java:272)
at org.apache.avro.io.ValidatingDecoder.readString(ValidatingDecoder.java:113)
at org.apache.avro.generic.GenericDatumReader.readString(GenericDatumReader.java:353)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:157)
at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193)
at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142)
at com.miguno.kafka.avro.AvroDecoder.fromBytes(AvroDecoder.scala:31)
{noformat}
>From my understanding, I should be able to read the old data with the new schema that contains a new field with a default value. But it doesn't seem to work. Am I doing something wrong ?
> Schema Evolution not working
> -----------------------------
>
> Key: AVRO-1661
> URL: https://issues.apache.org/jira/browse/AVRO-1661
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.7.6, 1.7.7
> Environment: Ubuntu 14.10
> Reporter: Nicolas PHUNG
> Priority: Critical
> Labels: avsc, evolution, schema
>
> This is the Avro Schema (OLD) I was using to write Avro binary data before:
> {noformat}
> {
> "namespace": "com.hello.world",
> "type": "record",
> "name": "Toto",
> "fields": [
> {
> "name": "a",
> "type": [
> "string",
> "null"
> ]
> },
> {
> "name": "b",
> "type": "string"
> }
> ]
> }
> {noformat}
> This is the Avro Schema (NEW) I'm using to read the Avro binary data :
> {noformat}
> {
> "namespace": "com.hello.world",
> "type": "record",
> "name": "Toto",
> "fields": [
> {
> "name": "a",
> "type": [
> "string",
> "null"
> ]
> },
> {
> "name": "b",
> "type": "string"
> },
> {
> "name": "c",
> "type": "string",
> "default": "na"
> }
> ]
> }
> {noformat}
> However, I can't read the old data with the new Schema. I've got the following errors :
> {noformat}
> 15/04/08 17:32:22 ERROR executor.Executor: Exception in task 0.0 in stage 3.0 (TID 3)
> java.io.EOFException
> at org.apache.avro.io.BinaryDecoder.ensureBounds(BinaryDecoder.java:473)
> at org.apache.avro.io.BinaryDecoder.readInt(BinaryDecoder.java:128)
> at org.apache.avro.io.BinaryDecoder.readString(BinaryDecoder.java:259)
> at org.apache.avro.io.BinaryDecoder.readString(BinaryDecoder.java:272)
> at org.apache.avro.io.ValidatingDecoder.readString(ValidatingDecoder.java:113)
> at org.apache.avro.generic.GenericDatumReader.readString(GenericDatumReader.java:353)
> at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:157)
> at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193)
> at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183)
> at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151)
> at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142)
> at com.miguno.kafka.avro.AvroDecoder.fromBytes(AvroDecoder.scala:31)
> {noformat}
> From my understanding, I should be able to read the old data with the new schema that contains a new field with a default value. But it doesn't seem to work. Am I doing something wrong ?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)