Hi Sean, Thank you for the very prompt response. Things are a lot clearer now thanks to the detailed steps you listed out.
I appreciate the time and effort you put in clarifying the issues. Regards Kamesh > On Sep 2, 2016, at 8:12 PM, Sean Busbey <bus...@cloudera.com> wrote: > > The schemas are fine, but the JSON snippet isn't a valid instance of > the second schema. > > In the default JSON encoding for Avro, you have to include the name of > the record as an object field[1]. > > For example, given test_schema_0.avsc with your first schema and > test_schema_1.avsc as your second, here are random example instances: > > $ java -jar avro-tools-1.9.0-SNAPSHOT.jar random --count 1 > --schema-file test_schema_0.avsc schema_0_random.avro > log4j:WARN No appenders could be found for logger > (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). > log4j:WARN Please initialize the log4j system properly. > log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig > for more info. > test.seed=1472871710806 > $ java -jar avro-tools-1.9.0-SNAPSHOT.jar tojson --pretty schema_0_random.avro > log4j:WARN No appenders could be found for logger > (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). > log4j:WARN Please initialize the log4j system properly. > log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig > for more info. > { > "name" : "msbvsjefb", > "id" : 5742171927645279316 > } > $ java -jar avro-tools-1.9.0-SNAPSHOT.jar random --count 1 > --schema-file test_schema_1.avsc schema_1_random.avro > log4j:WARN No appenders could be found for logger > (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). > log4j:WARN Please initialize the log4j system properly. > log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig > for more info. > test.seed=1472871721099 > $ java -jar avro-tools-1.9.0-SNAPSHOT.jar tojson --pretty schema_1_random.avro > log4j:WARN No appenders could be found for logger > (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). > log4j:WARN Please initialize the log4j system properly. > log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig > for more info. > { > "com.user.user_record" : { > "name" : "ljfijs", > "id" : -7695450471550075616 > } > } > > > > [1]: http://avro.apache.org/docs/current/spec.html#json_encoding > > On Fri, Sep 2, 2016 at 5:01 PM, Kamesh Kompella <kam...@chooxy.com> wrote: >> Hi there, >> First, please look at the following schema >> >> {"name": "user_record", >> "namespace": "com.user", >> "type": "record", >> "fields" : [ >> {"name": "name", "type": "string"}, >> {"name": "id", "type": "long"} >> ]} >> >> and the following JSON: >> >> {"name": “Foo", “id": 42} >> >> >> When I run avro-tools with the option fromjson, I get a .avro file. Stuff >> works. >> >> If I enclose the schema above into array as shown below (I bolded the array >> begin and end in red for clarity), avro-tools (version 1.8.1) throws the >> following exception and dies. >> >> >> [{"name": "user_record", >> "namespace": "com.user", >> "type": "record", >> "fields" : [ >> {"name": "name", "type": "string"}, >> {"name": "id", "type": "long"} >> ]}] >> >> I get the following exception: >> >> Exception in thread "main" org.apache.avro.AvroTypeException: Unknown union >> branch name at >> org.apache.avro.io.JsonDecoder.readIndex(JsonDecoder.java:445) >> >> Does it make sense to enclose a schema into array? Is this a bug in >> avro-tools or is this an invalid schema? The exception above seems to >> indicate that a schema file may not begin with a JSON array of schemas. >> >> The documentation seems to indicate schema may be defined as union of other >> other schemas. >> >> I cloned the code base and I could not locate a single instance of avsc file >> in it that defined its schema as a JSON array. Hence, the question. >> >> I appreciate your response. >> >> Regards >> Kamesh > > > > -- > busbey