【发布时间】:2017-12-12 19:46:32
【问题描述】:
我想知道我们可以在 Kafka 主题中拥有哪些类型的数据。 正如我在应用程序级别所知道的,这是一个键值对,这可能是该语言支持的类型数据。 例如,我们向主题发送一些消息,可以是一些 json、parquet 文件、序列化数据还是我们只对消息进行操作,就像使用纯文本格式一样?
感谢您的帮助。
【问题讨论】:
标签: apache-kafka file-format kafka-producer-api
我想知道我们可以在 Kafka 主题中拥有哪些类型的数据。 正如我在应用程序级别所知道的,这是一个键值对,这可能是该语言支持的类型数据。 例如,我们向主题发送一些消息,可以是一些 json、parquet 文件、序列化数据还是我们只对消息进行操作,就像使用纯文本格式一样?
感谢您的帮助。
【问题讨论】:
标签: apache-kafka file-format kafka-producer-api
在主题上,它总是只是序列化的数据。序列化发生在生产者中发送之前和反序列化在消费者中获取之后。序列化器和反序列化器是可插入的,因此正如您在应用程序级别所说的,它是您想要的任何数据类型的键值对。
【讨论】:
根据您谈论的是 API、有线协议还是磁盘存储,有多种消息格式。
这里的文档中描述了其中一些 Kafka 消息格式
https://kafka.apache.org/documentation/#messageformat
Kafka 有 Serializer/Deserializer 或 SerDes(发音为 Sir-Deez)的概念。
https://en.m.wikipedia.org/wiki/SerDes
序列化器是一个函数,它可以接收任何消息并将其转换为字节数组,然后使用 Kafka 协议在网络上实际发送。
反序列化器则相反,它读取 Kafka 有线协议的原始消息字节部分,并根据您希望接收应用程序看到它重新创建消息。
有用于 Strings、Long、ByteArrays、ByteBuffers 的内置 SerDes 库以及用于 JSON、ProtoBuf、Avro 以及应用程序特定消息格式的大量社区 SerDes 库。
您可以构建自己的 SerDes 库,也可以查看以下内容
【讨论】: