Kafka streams word count application

时间:2017-08-02 06:08:04

标签: scala apache-kafka streaming apache-kafka-streams

I'm playing around with the kafka streaming API (Kakfa version: 0.10.2.0) trying to make a simple wordcount example work: Wordcount App gist。我正在运行生产者和控制台消费者:

./kafka-console-producer.sh -topic input-topic --broker-list localhost:9092

./kafka-console-consumer.sh --topic output-topic --bootstrap-server localhost:9092 --from-beginning

启动应用程序,一切似乎都运行良好但是当我在控制台生产者中键入一些字符串时,消费者根本没有收到任何内容。如果我改变应用程序在输入上做一个简单的toUppercase,消费者接收流(修改为大写)罚款:

//The following code works fine: val uppercasedWithMapValues: KStream[String, String] = textLines.mapValues(_.toUpperCase()) uppercasedWithMapValues.to("output-topic")

有谁知道为什么我在单词计数示例中没有收到任何内容?我应该在消费者上指定任何序列化器吗?在我的上一次测试中,控制台消费者处理了我通过控制台发送但未显示的消息,请参阅下面的输出:

➜  bin ./kafka-console-consumer.sh \
           --topic output-topic \
           --bootstrap-server localhost:9092 \
           --from-beginning                                                                                
[2017-08-02 07:48:20,187]WARN Error while fetching metadata with correlation id 2 : 
{output-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2017-08-02 07:48:20,197] WARN The following subscribed topics are not assigned 
to any members in the group console-consumer-91651 : [output-topic]  
(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)

^ CProcessed共7条消息

1 个答案:

答案 0 :(得分:2)

KStream有效,因为它不使用缓存。对于KTable,您必须稍等一下,或将cache.max.bytes.buffering设置为0(但不在生产代码中!)