空列表作为AVRO阵列中的默认值

时间:2017-01-10 09:52:38

标签: avro

我的Schema.avdl中包含的内容:

array<string> names = null;

现在不是null,而是希望将默认值作为空数组,所以我尝试并失败了:

array<string> names = []; and array<string> names = {};

有人可以告诉我如何将空列表作为默认值吗?

谢谢。

2 个答案:

答案 0 :(得分:5)

我不确定这是否直接对您有所帮助,但在avro架构声明(.avsc)中,您可以编写以下内容:

{
 "type": "record",
 "namespace": "my.avro.schemas",
 "name": "Schema",
 "fields": [
    {"name": "string_arr", "type": {"type": "array", "items": "string"}, "default": []}
 ]
}

请注意,“default”字段定义是一个空的json数组。使用解析的avro Schema类的Builder将填充“string_arr”字段,默认情况下为空数组。

答案 1 :(得分:2)

array<string> names = [];适用于Avro 1.8.2。这将在JSON中生成以下字段:

{
  "name": "names",
  "type": {
    "type": "array",
    "items": "string"
  },
  "default": []
}