【问题标题】:Simplest Kafka Avro consumer in python [duplicate]python中最简单的Kafka Avro消费者[重复]
【发布时间】:2020-05-03 21:08:07
【问题描述】:

我有一个使用 Avro 格式向 Kafka 代理发送一些数据的系统。看起来 Confluent 平台最适合进一步接收、使用和处理它 - 但它又大又重。

我正在尝试使用通用 Apache Kafka 并在 python 中编写我自己的消费者代码。

真的有可能吗?我发现的所有代码示例都在 Confluent 上中继,特别是它们需要原始 Apache Kafka 中不存在的模式注册表。

【问题讨论】:

  • “又大又重”? Schema Registry 只是一个 Web 应用程序。你已经有了 Apache Kafka,Confluent 没有什么不同。 Kafka Connect 也已经在您的系统中。您似乎不需要 REST 代理...那么您认为其他哪些 OSS 组件“重”?
  • 事实上,不使用注册表实际上会使您的 Avro 消息在每条消息中占用更多空间,从而增加网络带宽
  • 我认为这张票不应该作为副本关闭,认为问题是如何在 python 中使用简单的 kafka 生产者而不是使用 avro 生产者。链接问题的答案使用了一个模式,我认为 op 只是想知道如何发送原始 kafka 消息,就像控制台生产者仅在 python 中一样。

标签: python apache-kafka avro


【解决方案1】:

您可以在这里找到一些灵感:How to decode/deserialize Kafka Avro strings with Python

因为 Avro 只不过是序列化,而 Kafka 消息只是字节数组,因此您始终可以获取下游字节并使用您的生产者或创建您自己的 Avro 架构来解析消息。

注意 - Confluent 的 KafkaAvroSerializer 为每条消息添加一个空的魔法字节和一个模式 ID(由 Confluent 的模式注册表分配)。如果 KafkaAvroSerializer 是数据管道的一部分,则需要忽略该字节和 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2019-11-23
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多