On Fri, Oct 19, 2012 at 2:57 PM, Koert Kuipers <[email protected]> wrote:
> how do i tell (generic) avro to use strings for values instead of it's own
> utf8 class?
>
> i saw a way of doing it by modifying the schemas (adding a property). i also
> saw mention of a way to do it if you use maven (which i don't).

The property is "avro.java.string".  If the value is "String" then a
java.lang.String is returned.  In other words, if the reading schema
is {"type":"string", "avro.java.string":"String"} then String will be
returned instead of Utf8.

The Maven technique causes the specific compiler to emit this for all
String schemas.  This is done by adding
<stringType>String</stringType> to your pom.xml.

> is there a generic way to do this? like a system property perhaps? or a
> static method that i call to change the default?

No.  A static switch would break other applications that don't expect
this.  However one can override the readString() method in either the
Decoder or the DatumReader to achieve this.

Doug

Reply via email to