首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >avro AVSC (json)文件数组或模式重用

avro AVSC (json)文件数组或模式重用
EN

Stack Overflow用户
提问于 2021-03-02 14:11:25
回答 1查看 479关注 0票数 0

这与一个被问了无数次的问题有关,但我找不到一个明确的答案。

在用于定义avro模式的AVSC (json)语法中,没有“导入”功能。因此,似乎没有明确的方法来定义模式并在其他地方引用它。(我认识到AVDL支持import,但java解析器还不允许uuid类型,尽管这是修补的,并将在1.11中修复)

我看到了许多关于“如何重用模式”的答案,这些方法依赖于使用avro maven plugin来定义“include”--如果您使用java,这是很棒的,但是我是在一个polyglot环境中工作的。

我在一个AVSC文件中玩弄了这个语法,这个文件在maven/java中为我工作,但似乎完全没有文档化:

代码语言:javascript
复制
[
  // ^ note: starts with a top-level array
  {
    // schema 1

    "type": "record",
    "namespace": "com.mycompany",
    "name": "Money",
    "fields": [
      {
        "name": "amount",
        "type": {
          "type": "bytes",
          "logicalType": "decimal",
          "scale": 2,
          "precision": 19
        }
      },
      {
        "name": "currency",
        "type": "string",
        "doc": "3-character ISO 4217 currency code"
      }
    ]
  },
  {
    // schema 2, references schema 1
    
    "type": "record",
    "namespace": "com.mycompany.budgeting"
    "name": "BudgetsModified",
    "fields": [
      {
        "name": "id",
        "type": {
          "type": "string",
          "logicalType": "uuid"
        }
      },
      {
        "name": "amount",
        // re-use
        "type": "com.mycompany.Money"
      }
    ]
  }
]

但是这实际上是支持还是仅仅是maven avro插件的一个怪癖呢?

我特别想解决的问题是:

  • 必须支持java、python和(理想情况下)类型记录(因此,仅使用maven解决方案是不好的)
  • 必须支持模式引用/重用--我不想在要求它的每个模式中重新定义Money (带有货币的十进制)这样的自定义元组(
  • 必须与汇合模式注册表

互操作)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 14:31:12

,但这实际上是支持还是仅仅是maven avro插件的一个怪癖呢?

这是组合/引用架构的一种完全有效的方法。实际上,在python fastavro库中,最初只需要这样做;它会将所有模式加载到一个列表(Avro )中,因为这是解决问题的一种正确而简单的方法。

至于must interoperate with Confluent Schema Registry,我不知道模式注册中心是如何工作的,也不知道它是否支持这种类型的联合模式,但希望它能够支持,因为模式是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66441036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档