【问题标题】:What is the reasoning behind Kafka Connect Schemas?Kafka Connect Schemas 背后的原因是什么?
【发布时间】:2018-02-28 06:59:46
【问题描述】:

我们正在编写一个自定义接收器连接器,用于将带有 avro 消息的主题内容写入 CEPH 存储。

为此,我们提供了 SinkRecords,它有一个 Kafka Connect 模式,它是我们的 avro 模式的映射版本。由于我们想将 avro 写入 CEPH,我们使用 connect API 方法将 Connect 模式转换回 Avro。为什么我们需要这样做?引入 Kafka Connect Schema 而不使用更常用的 Avro Schema 有什么好处?

仅供参考:我问这个是因为我们在 Avro 工会方面存在一些问题。他们到 Kafka Connect Schema 的映射仍然存在一些问题,例如https://github.com/confluentinc/schema-registry/commit/31648f0d34b10c1b36e8ec6f4c1236ed3fe86495#diff-0a8d4f17f8d4a68f2f0d2dcd9211df84

【问题讨论】:

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


    【解决方案1】:

    Kafka Connect 定义了自己的模式结构,因为该框架将连接器与有关消息如何在 Kafka 中序列化的任何知识隔离开来。这使得可以将任何连接器与任何转换器一起使用。如果没有这种分离,连接器会期望消息以特定形式序列化,从而使它们更难重用。

    如果您知道所有消息都使用特定的 Avro 模式进行序列化,则您始终可以将接收器连接器配置为使用 ByteArrayConverter 作为键和值,然后您的连接器可以处理序列化形式的消息。

    但是,请注意,如果使用 Confluents Avro 序列化程序(或源连接器中的 Avro 转换器)对消息进行序列化,则键和值的二进制形式将在前导字节中包含魔术字节和 Avro 模式标识符( s)。字节数组的剩余内容将是 Avro 序列化形式。

    【讨论】:

    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 2018-08-31
    • 2020-01-26
    • 2016-03-31
    • 2021-11-01
    • 2010-10-03
    • 1970-01-01
    • 2014-10-17
    相关资源
    最近更新 更多