关于kafkaStream的一些应用实战,基于窗口的

废话不多说,关于kafka的其他东西,不详细叙述了,有很多,本文主要基于窗口的,网上的相关案例比较少

我用到的窗口时timeWindow,滚动窗口,kafkaStream,或者说很多流式计算的窗口其实都可以分为3种,会话,滚动,滑动,区别网上很多。

timeWindow有两个参数,一个是advanceby,一个时of,也就是窗口的长度

TimeWindows timeWindows = TimeWindows.of(30000);
//此处是窗口步进时间
timeWindows.advanceBy(30000);

我主要用aggregrate这个函数,就是进行窗口聚合的

第一个是窗口聚合的初始值,第二个是进行聚合的聚合器,第三个就是窗口时间,第四个是类似于序列化的东西

KTable aggregate = groupedStream.aggregate(initializer, aggregator, timeWindows, resultSerde);

这个是初始化函数,可以定义你的初始值

public class MyInitializer implements Initializer {
    @Override
    public VarData apply() {

这个是聚合函数的具体实行方法,消息键,值,和上次聚合后传过来的值,此处返回值,就是本次聚合后的值,我将其封装为vardata

public VarData apply(Object key, Object value, Object vardata) {

在得到聚合结果后,就可以根据具体的结果,将结果进行输出打印,或者是直接放到其他topic当中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值