空列表作为AVRO数组中的默认值

Xit*_*rum 2 avro

我在Schema.avdl中拥有什么:

array<string> names = null;
Run Code Online (Sandbox Code Playgroud)

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

array<string> names = []; and array<string> names = {};
Run Code Online (Sandbox Code Playgroud)

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

谢谢。

bla*_*iet 7

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

{
  "name": "names",
  "type": {
    "type": "array",
    "items": "string"
  },
  "default": []
}
Run Code Online (Sandbox Code Playgroud)


小智 5

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

{
 "type": "record",
 "namespace": "my.avro.schemas",
 "name": "Schema",
 "fields": [
    {"name": "string_arr", "type": {"type": "array", "items": "string"}, "default": []}
 ]
}
Run Code Online (Sandbox Code Playgroud)

请注意,“默认”字段定义是一个空的json数组。默认情况下,使用已解析的Avro Schema类的构建器将在“ string_arr”字段中填充一个空数组。