在Avro Schema中,如何检查“别名”中是否存在不一致?

时间:2018-06-12 12:54:42

标签: validation alias avro apache-nifi avro-tools

有没有办法验证Avro架构是否有效?特别是我需要检查“别名”中没有重复的值吗?

上下文:

我正在使用NiFi来验证传入的FlowFiles。为此,我“手动”生成了Avro架构,当我将架构存储在其中时,我们AvroSchemaRegistry的状态变为“无效”。

我在NiFi日志中没有找到任何有用的消息,并且NiFi GUI中的错误弹出也无能为力,因为我们的Avro架构太长而且帮助消息的末尾被截断了。

经过多次测试后,我终于发现我在aliases部分有两个包含重复值的字段。

一个简短的例子:

{ 
  "type": "record", 
  "name": "testDuplicate", 
  "namespace":"test", 
  "fields": [
    {"name":"field_1","type": ["string"  ,"null"],"aliases": ["Alias_01"]},
    {"name":"field_2","type": ["string"  ,"null"],"aliases": ["Alias_02", "Alias_01"]}
  ]
}

所以我想知道在将模式导入AvroSchemaRegistry之前,某些工具是否可以检测到这种错误?

我查看了avro-tools.jar但是我没有看到可能有用的东西......命令java -jar ./avro-tools-1.8.2.jar compile --schema-file test.schema确实生成了java类,但似乎没有检查别名

我还尝试使用另一个lib avro-cli-0.2.7.jar,但又没有成功。

有没有人想解决这个(轻微的)不便?

0 个答案:

没有答案