【问题标题】:Debezium might produce invalid schemaDebezium 可能会产生无效的模式
【发布时间】:2020-04-11 08:09:31
【问题描述】:

我遇到了 Avro 和 Schema Registry 的问题。在 Debezium 创建了模式和主题后,我从 Schema Registry 下载了模式。我把它放到一个 .asvc 文件中,它看起来像这样:

  {
    "type": "record",
    "name": "Envelope",
    "namespace": "my.namespace",
    "fields": [
      {
        "name": "before",
        "type": [
          "null",
          {
            "type": "record",
            "name": "MyValue",
            "fields": [
              {
                "name": "id",
                "type": "int"
              }
            ]
          }
        ],
        "default": null
      },
      {
        "name": "after",
        "type": [
          "null",
          "MyValue"
        ],
        "default": null
      }
    ]
  }

我做了两个实验:

  1. 我尝试将其放回架构注册表,但出现此错误:MyValue 不正确。当我删除“之后”记录时,架构似乎运行良好。

  2. 我使用 avro-maven-plugin 中的“generate-sources”来生成 Java 类。当我尝试使用上面的主题时,我看到了这个错误:

    线程“b2-StreamThread-1”org.apache.kafka.streams.errors.StreamsException 中的异常:在进程中捕获异常。 [...]:注册 Avro 架构时出错:[...]

    原因:io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException:正在注册的模式与早期的模式不兼容;错误代码:409

有人遇到过同样的问题吗?是 Debezium 产生了无效的模式,还是 Schema Registry 出现了错误?

【问题讨论】:

    标签: apache-kafka avro confluent-schema-registry debezium


    【解决方案1】:

    MyValue 不正确。

    这不是 Avro 类型。您必须在联合中嵌入实际记录,就像之前的值一样

    换句话说,您无法交叉引用架构中的记录类型,AFAIK

    当我尝试使用上面的主题时,我看到了这个错误:

    消费者不注册模式,因此不清楚你是如何得到这个错误的,除非可能使用 Kafka Streams,它会产生中间主题

    【讨论】:

      猜你喜欢
      • 2016-02-13
      • 1970-01-01
      • 2021-12-01
      • 2018-11-13
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 2023-03-25
      • 2020-11-05
      相关资源
      最近更新 更多