Avro Schema失败

时间:2017-12-15 12:01:39

标签: avro

我有以下对象:

[
{"ProductId":10,"ProductName":"some name"}
]

有时我只有null。我想为此提出一个架构。但它似乎不起作用:(。

我尝试了以下两个:

{
    "name": "ProductsOrNull", 
    "type": ["null", {
      "type": "array",
      "name": "Products",
      "items": {
        "type":"record",
        "name": "Product",
        "fields": [{
            "name":"ProductId",
            "type":"long"
          }, {
            "name":"ProductName",
            "type":"string"
          }
        ]
      }
    }],
    "default": null
}

但在运行Exception in thread "main" org.apache.avro.SchemaParseException: No type: <...>时,java -jar avro-tools-1.8.2.jar fromjson --schema-file prod.avsc prod.json > lol.avro失败了。

我也用同样的错误来解决这个问题:

{
  "type": ["null", "array"],
  "name": "Products",
  "items": {
    "type":"record",
    "name": "Product",
    "namespace": "{{ dataModelSchema }}",
    "fields": [{
        "name":"ProductId",
        "type":"long"
      }, {
        "name":"ProductName",
        "type":"string"
      }
    ]
  }
}

我真的不明白问题出在哪里以及两者之间有什么区别。

1 个答案:

答案 0 :(得分:1)

基于您的架构,您的json对象应该看起来像

{
"ProductsOrNull" : 
[
{"ProductId":10,"ProductName":"some name"}
] 
}

无法使用没有字段名称的数组定义和avro架构。