在apachenifi中定义apacheavro模式全名

在apachenifi中定义apacheavro模式全名,avro,apache-nifi,Avro,Apache Nifi,使用NiFi 1.7.1(使用Java Avro 1.8.1)和AvroSchemaRegistry,我试图定义一个模式,该模式的顶级字段为name和app.name。根据Avro文档[1],我假设我可以像普通的“name”:“app.name”一样定义全名,但我在:app.name中遇到了错误非法字符。确实,全名的名称部分不允许点,但根据文档:“如果指定的名称包含点,则假定它是全名…” 然后我尝试使用名称空间字段。使用以下架构: { "type": "record", "name":

使用NiFi 1.7.1(使用Java Avro 1.8.1)和AvroSchemaRegistry,我试图定义一个模式,该模式的顶级字段为
name
app.name
。根据Avro文档[1],我假设我可以像普通的
“name”:“app.name”
一样定义全名,但我在:app.name中遇到了错误
非法字符。确实,全名的名称部分不允许点,但根据文档:“如果指定的名称包含点,则假定它是全名…”

然后我尝试使用名称空间字段。使用以下架构:

{
  "type": "record",
  "name": "nameRecord",
  "fields": [
    {
      "type": [
        "string",
        "null"
      ],
      "name": "name"
    },
    {
      "type": [
        "string",
        "null"
      ],
      "namespace": "app",
      "name": "name"
    }
  ]
}
我遇到了以下错误:
记录名称record:name-type:UNION-pos:1和name-type:UNION-pos:0中的字段名称重复

最后,我希望能够为这样的记录定义一个模式(JSON):

[1]

根据,名称空间仅支持记录、枚举和固定类型,其他字段必须遵守句点(.)不是有效字符的“常规”命名约定


但是,从NiFi 1.5.0(via)开始,您可以在中指定模式,并将“验证字段名”设置为false。这将允许您绕过将字段名称设为app.name的限制。谢谢Matt,lol有时您只是有眼罩,忽略了显而易见的内容。
{
  "name": "Joe",
  "app.name": "NiFi"
}