kafka(4)--使用Streams处理数据

1. 简介
Kafka Streams 是Kafka的客户端库, 用来做实时流处理和分析存储在Kafka代理服务器的数据。本文将演示如何运行这个流应用库。具体操作过程为:文件file-input.txt数据导入topic streams-file-input , 示例程序从topic streams-file-input中获取数据并计算各个单词的出现频率后将单词频率统计结果输出到topic streams-wordcount-output 中,最后通过consumer 从topic streams-wordcount-output中获取统计结果。示例程序从示例代码WordCountDemo

示例代码实现了单词计数算法,计算输入文本中每个单词的出现次数。与其他单词计数的算法不同的是其他的算法一般都是对有界数据进行操作,该算法被设计去操作无限的,无界的流数据。和操作有界数据的算法相似,该算法是一个有状态的算法,可以跟踪和更新单词的计数。因为该算法无法获知数据是否已经处理完,所以该算法必须承担潜在的无界输入数据的处理,该算法会周期性地输出当前状态和结果,同时继续处理更多的数据。
具体操作步骤如下:

2. 准备测试数据

# echo -e "all streams lead to kafka\nhello kafka streams\njoin kafka summit" > file-input.txt

3. 导入数据
我们使用控制台生产者把输入的数据发送到名为streams-file-input 的topic上,其内容从STDIN一行一行的读取,并一行一行的发布到主题,每一行的消息都有一个空键和编码后的字符串(在实践中应用起来后,流数据很一般会持续流入Kafka):

# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic streams-file-input
# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic streams-file-input < file-input.txt

4. 统计单词频率

运行单词技术程序:

# bin/kafka-run-class.sh org.apache.kafka.streams.examples.wordcount.WordCountDemo

演示程序将从topic streams-file-input读取数据,对读取的消息执行单词计数算法,并且持续输出结果到输出topic streams-wordcount-output。因此,除了写回Kafka的日志条目,不会有任何的输出。演示程序将运行几秒钟,最后停止。

5. 获取单词频数

# bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
            --topic streams-wordcount-output \
            --from-beginning \
            --formatter kafka.tools.DefaultMessageFormatter \
            --property print.key=true \
            --property print.value=true \
            --property key.deserializer=org.apache.kafka.common.serialization.StringDeserializer \
            --property value.deserializer=org.apache.kafka.common.serialization.LongDeserializer

运行结果:

all     1
lead    1
to      1
hello   1
streams 2
join    1
kafka   3
summit  1

可以向输入topic加入更多的数据,查看消费者输出的单词计数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值