当前位置: 首页 > 知识库问答 >
问题:

在Apache NiFi中定义Apache Avro架构全名

齐泰
2023-03-14

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

然后我尝试使用命名空间字段。使用以下模式:

{
  "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中):

{
  "name": "Joe",
  "app.name": "NiFi"
}

[1] https://avro.apache.org/docs/1.8.1/spec.html#names

共有1个答案

慕凌龙
2023-03-14

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

但是,从NiFi 1.5.0开始(通过NiFi-4612),您可以在AvroSchemaRegistry中指定模式,并将“验证字段名”设置为false。这将允许您绕过字段名称为app的限制。名称

 类似资料:
  • 我得到了一个定义字段的警告: 我试图将其更改为: 现在它根本不起作用,因为模式无效。 错误: 知道怎么解决吗?

  • 大部分当前web浏览器使用一种将用户和网络结合成一个单一保护域的单片结构。在这样的浏览器中,攻击者可以利用任意代码执行漏洞,盗取敏感信息或者安装恶意软件。在这篇文章里,我们展示了Chromium的安全架构。Chromium有着两个处于独立保护域 的模块:一个是浏览器内核,与操作系统交互,一个是渲染引擎,运行在只有限制权限的沙箱中。这种架构有助于减少高危攻击,而不牺牲与现有网站的兼容性。我们为浏览器

  • 我正在使用层叠将文本分隔转换为拼花地板 下面是拼花图案: 以下是avro模式: 如何跟踪parquet中avro文件中的“doc”部分?

  • 我有一份CSV档案 1577,真,假,假,假,真 我试图用自定义模式加载csv文件, 但模式的可正确为null并没有按预期更改。

  • 问题内容: 创建一个新的数据库架构,并创建一个不存在的数据库架构,并更新现有的数据库架构。如果我想检查数据库模式是否存在,并根据将要创建的数据库模式来检查,该如何实现。目前,我的配置是: 和HibernateEMSDao.java: 这是工作。什么配置可以帮助我实现这一目标?就像是: 检查ID = 1的用户是否存在 如果没有创建架构 感谢致敬。 问题答案: 您可以禁用该选项,检查条件(可能使用普通

  • 目标 为API中发出的每个请求包含多个安全标头 问题 我正在尝试将多个标头添加到我的Swagger YAML安全定义中。我已经搜索了API,但运气不佳,但我发现在进行“尝试此操作”时,我需要选择一个。而不是两者都能使用。这是正确的还是我做了什么不正确的事情? 片段 另类? 如果我试图做到这一点,这是不可能的……是否可以将这些参数指定为swagger文档中所有rest路径的默认值? 我是本周Swag