The idl2schemata tool in avro-tools can help:

[user@host]$ cat test.idl
protocol EmployeeProtocol
{
  record Employee {
    string name;
    long employeeId;
  }
  record EmployeeWithUnion{
    union {null, Employee} optionalEmployee = null;
  }
}
[user@host]$ java -jar avro-tools-1.8.2.jar idl2schemata test.idl test
[user@host]$ cat test/EmployeeWithUnion.avsc
{
  "type" : "record",
  "name" : "EmployeeWithUnion",
  "fields" : [ {
    "name" : "optionalEmployee",
    "type" : [ "null", {
      "type" : "record",
      "name" : "Employee",
      "fields" : [ {
        "name" : "name",
        "type" : "string"
      }, {
        "name" : "employeeId",
        "type" : "long"
      } ]
    } ],
    "default" : null
  } ]
}

On Fri, Oct 19, 2018 at 8:21 PM Jacob Sheck <shec0...@gmail.com> wrote:

> Can you use a union with null?  This would be the IDL exmple.
>
> record RecordConfig {
> ...
> }
>
>  union {null, RecordConfig} record = null;
>
> On Fri, Oct 19, 2018 at 2:44 PM Mina Aslani <aslanim...@gmail.com> wrote:
>
>> Hi,
>>
>> I am adding AVRO schema to the kafka messages, however, I would like to
>> know how I can make a field of "type": "record" optional.
>> *Note*: "default":null does not help.
>>
>> Any idea? Can you elaborate the solution/workaround with an example
>> please?
>>
>> Best regards,
>> Mina
>>
>

Reply via email to