How to fix Expected start-union. Got VALUE_NUMBER_INT when converting JSON to Avro on the command line?

According to the explanation by Doug Cutting,

Avro’s JSON encoding requires that non-null union values be tagged
with their intended type. This is because unions like
[“bytes”,”string”] and [“int”,”long”] are ambiguous in JSON, the first
are both encoded as JSON strings, while the second are both encoded as
JSON numbers.

http://avro.apache.org/docs/current/spec.html#json_encoding

Thus your record must be encoded as:

{"name": "Alyssa", "favorite_number": {"int": 7}, "favorite_color": null}

Leave a Comment