Avro 模式对象 - 递归

Avro schema object - recursion

是否可以在 avro 架构中创建 class 并将其参数之一作为自身?

java中的示例:

public class Example {

private Integer value;
private Example example;

}

Avro 架构未在 java 中定义,但在通常具有 .avsc 文件扩展名的 json 文件中定义。这是代表树的递归 avro 模式的示例:

{
  "type": "record",
  "name": "Node",
  "fields": [
    {
      "name": "value",
      "type": "long"
    },
    {
      "name": "children",
      "type": { "type": "array", "items": "Node" }
    }
  ]
}

所以是的,完全有可能创建递归模式。

另见 this issue,其中定义了更短的架构:

{
  "type": "record",
  "name": "RecursiveRecord",
  "fields": [{"name": "child", "type": "RecursiveRecord"}]
}