3

我正在使用 kafka-node ( https://github.com/SOHU-Co/kafka-node ) 消费者来检索数据。我认为我得到的数据是用 SNAPPY 压缩的。得到数据后如何解压。我尝试使用 node-snappy ( https://github.com/kesla/node-snappy ) 来解压缩数据,但它没有用。

库中是否有任何选项可以将压缩设置为无?

任何人都使用 kafka-node 库从 kafka 获取数据..??

谢谢,陈杜

4

2 回答 2

2

我也遇到了这些确切的问题。我终于找到了解决办法!您可以在此处使用 kafkacat('like netcat for kafka')下载,这需要librdkafka。这使您能够使用 librdkafka C/C++ 库从命令行与 Kafka 进行交互。(不需要 JVM =D)

现在我们已经处理了这些依赖项,我们可以使用这个有趣的 node.js 存储库:node-kafkacat

您会发现这三个库之间可能有足够的文档来帮助您入门,并且与 github 上的其他一些 kafka-node 模块不同,它们似乎最近才更新。

到目前为止,我只在 Linux 和 Mac 上成功安装,但在我们的 Apache/Java 环境中运行良好。顺便说一句,我不是任何这些软件包的作者——只是一些一直希望你的问题在过去几周内得到解答的人。

于 2014-11-14T00:38:46.233 回答
1

默认情况下,压缩由生产者通过配置属性“compression.type”确定。目前支持 gzip、snappy 和 lz4。kafka-node 应该自动解压缩 gzip 和 snappy。我刚刚用 snappy 试了一下,这开箱即用。lz4 目前似乎没有由 kafka-node 实现。

可以使用配置属性“compression.type”来配置压缩:

  • 每个经纪人:https ://kafka.apache.org/documentation/#brokerconfigs 。默认值:生产者确定压缩
  • 每个主题:https ://kafka.apache.org/documentation/#brokerconfigs (向下滚动)。默认值:生产者确定压缩
  • 每个生产者:https ://kafka.apache.org/documentation/#producerconfigs 。默认值:无

如果您无法影响生产者,则可以考虑覆盖主题配置。

另外,请注意,kafka-node 可能不会像您期望的那样直接返回数据。例如,我的 (key, value) 对是 (integer, integer) 类型,我必须同时调用 message.key.readIntBE() 和 message.value.readIntBE() 来提取整数值。

希望这可以帮助!

于 2017-01-17T12:30:46.963 回答