Have a look at this
https://issues.apache.org/jira/browse/AVRO-1316

This is the bug that required this change.

Niels Basjes

On Mon, 10 Aug 2015 11:05 mark <manwoodv...@googlemail.com> wrote:

> I am using Avro v1.7.7 in development, and Avro version 1.7.4 on my Hadoop
> cluster.
>
> I have a fairly large .avdl schema - a record with about 100 fields. When
> running locally under test there were no issues with this schema,
> everything would serialize and deserialize without issue.
>
> When running on Hadoop however I was getting this error:
>
> *Exception in thread "main" java.lang.NoSuchMethodError:
> org.apache.avro.Schema$Parser.parse(Ljava/lang/String;[Ljava/lang/String;)*
>
> The reason was that the JSON schema embedded in the compiled java class
> was being broken into two:
>
> *public class SomeType extends org.apache.avro.specific.SpecificRecordBase
> implements org.apache.avro.specific.SpecificRecord {*
> *  public static final org.apache.avro.Schema SCHEMA$ = new
> org.apache.avro.Schema.Parser().parse("long schema string part1", "long
> schema string part2")*
>
> Now, version 1.7.7 has this method signature:
>
> *public Schema parse(String s, String... more)*
>
> So the broken schema string works fine locally, but version 1.7.4. does
> not, hence the exception when running compiled classes on Hadoop.
>
> Is this intentional or a bug?
> If intentional, what are the rules determining when Avro breaks up a
> schema string?
> Where is this behaviour documented?
> Why does it do it at all?
>
> Thanks
>

Reply via email to