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

Avro架构失败

万浩淼
2023-03-14

我有以下对象

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

Bu 有时我只是空。我正在尝试为此提出一个架构。但它似乎:(不起作用。

我尝试了以下两种:

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

但它失败了,线程“main”org.apache.avro中出现<code>异常。SchemaParseException:无类型:

我也尝试了同样的错误:

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

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

共有1个答案

冯卓
2023-03-14

基于您模式,您的json对象应该看起来像这样

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

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

 类似资料:
  • 嘿,我想将ConFluent模式注册表与Avro Serializers一起使用:留档现在基本上是说:不要为多个不同的主题使用相同的模式 谁能解释一下原因吗?我重新搜索了源代码,它基本上将模式存储在Kafka主题中,如下所示(topicname,magicbytes,version- 因此,除了冗余之外,我看不到多次使用模式的问题?

  • 这实际上与我之前的问题相同,但使用Avro而不是JSON作为数据格式。 我正在使用一个Spark数据框架,它可以从几个不同的模式版本之一加载数据: 我正在使用Spark Avro加载数据。 它可能是版本一文件或版本二文件。但是我希望能够以相同的方式处理它,将未知值设置为“null”。我之前的问题中的建议是设置模式,但是我不想重复自己在文件中编写模式,也不想重复自己在和朋友中编写模式。如何将avro

  • 我在Kafka的制作人那个里工作,推动主题中的信息。我用的是融合的Kafka。 github上的喜欢问题 下面是我的模式。avsc文件。 Keys.avsc 测试.avsc 生产者.py 当我尝试注册时,它工作正常,没有错误。但是当我尝试注册之后注册。我得到以下错误。 confluent_kafka.avro.error。ClientError:架构分析失败:未知的命名架构“io.codebrew

  • 我使用Avro模式动态地从C#应用程序生成消息到Kafka集群,使用汇合的Kafka客户机。在编译时不知道数据类型,因此我使用命名空间中的GenericRecord类,如下所述:https://www.confluent.io/blog/decoupling-systems-with-apache-kafka-schema-registry-and-avro/。 但是,我有一个问题--如果模式有一

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

  • 我有一个问题,我的记录json可以为null。如何处理avro模式中的空记录?给出的文档是针对我想要为null记录获取的null属性的。