kafka streams学习

本文介绍了Kafka Streams作为实时流计算类库的优势,如轻量级、与Kafka无缝集成等,并通过一个简单的word-count示例演示其使用。文中还提到了Kafka Streams与其他实时流处理框架的对比,以及如何进行分组聚合和Topic Join操作。
摘要由CSDN通过智能技术生成

项目源码:https://github.com/NickyWooden/kafka-streams-demo.git

Kafka streams是kafka提供的用于实时流计算的类库,支持各种窗口操作、支持事件时间、支持水印、多个流join操作、状态及容错,可与kafka或其他消息系统结合使用,用于将订阅kafka topic数据实时处理后结果推回kafka或其他消息系统

相比于其他实时流处理框架,比如Spark Streaming/Structured Streaming 、Flink、Storm,为什么要用Kafka Streams呢?

因为它是个类库,使用轻量便携非侵入,可以灵活地嵌入任何java或Scala业务代码中,与kafka 无缝结合使用

而其他的流处理框架相对太笨重,要搭建一系列集群,还要打包提交任务,现实在数据量不大的情况下完全可以使用Kafka Streams来做,比如将两台硬件设备的实时日志消息做个Join连接加滑动窗口操作比如卡口摄像头拍到的车牌和伪基站捕获的手机号做join用于抓捕罪犯

1.新建maven项目,引入依赖,版本要和server一致

<dependency> 
 <groupId>org.apache.kafka</groupId>
 <artifactId>kafka-streams</artifactId>
 <version>2.3.0</version>
</dependency>
<dependency>
 <groupId>org.apache.kafka</groupId>
 <artifactId>kafka-clients</artifactId>
 <version>2.3.0</version>
</dependency>
 <dependency>
<groupId>org.slf4j</groupId>
 <artifactId>slf4j-nop</artifactId>
 <version>1.7.2</version>
</dependency>

2.编写第一个kafka-streams应用:word-cout

server端创建两个topic,input-topic,output-topic,分别为kafka streams输入topic和计算后输出topic

./kafka-topics.sh --create --bootstrap-server 192.168.1.107:9092 --replication-factor 1 --partitions 1 --topic input-topic
./kafka-topics.sh --create --bootstrap-server 192.168.1.107:9092 --replication-factor 1 --partitions 1 --topic output-topic 
#分别为input-topic开生产者shell客户端,output-topic开消费者客户端
 ./kafka-console-producer.sh --broker-list 192.168.1.107:9092 --topic input-topic
 ./kafka-console-consumer.sh --bootstrap-server 192.168.1.107:9092 --topic output-topic --from-beginning

新建java 文件编写程序代码

package com.ly.kafka.main;

import org.apache.kafka.common.serialization.Serdes;
import org.apache.kafka.common.utils.Bytes;
import org.apache.kafka.streams.KafkaStreams;
import org.apache.kafka.streams.StreamsBuilder;
import org.apache.kafka.streams.StreamsConfig;
import org.apache
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值