Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Plain View
Avro, mail # user - Question about Avro "records"


+
Francis Galiegue 2013-02-27, 21:47
+
Pankaj Shroff 2013-02-27, 21:54
+
Francis Galiegue 2013-02-27, 22:14
Copy link to this message
-
Re: Question about Avro "records"
Pankaj Shroff 2013-02-27, 22:21
Yes thats right, and the default value can be "null" - which is what makes
"b" an "optional" field.

You can define an optional field by defining it of type "union" in an Avro
schema where the first type in the union is "null" and the second type is
"long" or integer in your case.

Something like this (.avsc or .avpr file would have the following Json):

{
    "type": "record",
    "name": "OptionalFieldsExample",
    "fields": [
        {"name": "a",        "type": "long"},
        {"name": "b", "type": ["null", "long"]},
        {"name": "c", "type": ["null", "long"]}

    ]}

On Wed, Feb 27, 2013 at 5:14 PM, Francis Galiegue <[EMAIL PROTECTED]>wrote:

> On Wed, Feb 27, 2013 at 10:54 PM, Pankaj Shroff <[EMAIL PROTECTED]> wrote:
> > That doesn't seem the case specially because if you define a record with
> a
> > bunch of optional fields, then you would end up with an empty object (or
> > rather an object with null values for its fields). Am I misunderstanding
> > your question?
> >
>
> OK, I have probably misworded the question. Let's say I have a record
> defining fields "a" and "b". For simplicity, their permissible values
> are ints.
>
> As I understand it:
>
> { "a": 1 }
>
> is not legal since "b" is not provided.
>
> This:
>
> { "a": 1, "b": 2, "c": 3 }
>
> is not legal either since "c" is not defined.
>
> BUT: { "a": 1 } can be legal IF a default value is provided for "b".
>
> Am I getting this right, partially right, completely wrong?
>
> --
> Francis Galiegue, [EMAIL PROTECTED]
> JSON Schema in Java: http://json-schema-validator.herokuapp.com
>

--
Pankaj Shroff
[EMAIL PROTECTED]
+
Francis Galiegue 2013-02-27, 22:52
+
Doug Cutting 2013-02-27, 22:20
+
Francis Galiegue 2013-02-27, 22:51
+
Doug Cutting 2013-02-27, 23:10
+
Francis Galiegue 2013-02-27, 23:55
+
Doug Cutting 2013-02-28, 01:12
+
Jeremy Kahn 2013-02-28, 01:30
+
Doug Cutting 2013-02-28, 17:11
+
Francis Galiegue 2013-02-28, 01:40