• 明翼
    2019-09-09
    单词计数里面的groupBy算子里面的key和value不太明白,不太明确那,为什么最后还要count计数

    作者回复: groupBy之后才能进行各种aggregation操作,比如count。groupBy要指定根据什么进行group,这就是key

    
     1
  • lmtoo
    2019-09-07
    第一个例子没有时间窗口的情况下,统计的是什么?最终单词的计数,还是某个时间段的计数

    作者回复: 截止到程序运行时

    
     1
  • What for
    2020-02-04
    有几个疑惑详情老师赐教:
    1、demo 是一个可以单机跑的 Java 进程,运行时会有几个线程工作?
    2、如果输入 topic 有 3 个分区,在计算过程中 consumer 会在 3 个不同的线程里分别起 1 个消费 1 个分区还是说有其他的配置项可以调整?
    3、遇到 shuffle 时下游的计算计算分区还是就统一汇总计算?如果 shuffle 下游有分区怎么确定分区策略以及写入输出 topic 的时候会有几个 producer?

    作者回复: 1. 不知道你说的是哪个Java进程。比如对Broker进程而言,线程数可能会有很多,大约十几个。如果想了解都有哪些线程,不妨用JConsole去查看下
    2. Java Consumer使用单线程获取所有分区数据,至于拿到消息之后是否分多个线程由用户决定。对于Kafka Streams而言,由参数num.stream.threads而定
    3. 这个因你使用什么operator而定。

    
    
  • leige
    2019-12-09
    stream和table都会有对应的topic吧,老师?他们的本质区别是什么?

    作者回复: 在topic层面,它们的区别反映在cleanup.policy上:stream是non-compact的topic;table是compact的topic

    
    
  • hunterlodge
    2019-11-27
    老师,我们领导提出了这样一些需求:1. 可以根据消息中的字段查询消息内容,这样可以用来诊断消息确实写入了kafka;2. 可以对某些消息重放;3. 可以对某些消息打标记从而控制消息的消费。我调研了一圈,第一点貌似可以用confluent的ksql做到,但是需要引入ksql server等复杂性,第二点也可以基于ksql来复制消息到重放队列(这样每一个topic都会存在一个重放topic)。第三点暂时还没有很好的思路。求助老师更好的方案,谢谢!

    作者回复: 第三点使用Interceptor试试呢?

    
    
  • 达文西
    2019-11-27
    感觉打开了新世界的大门,虽然暂时在业务上用不上
    
    
  • hunterlodge
    2019-11-12
    老师,我有几个疑问:
    1. 如果客户端应用重启了,KTable及写入的KStream在重启前的状态就都清楚了对吗?如果是的话,重启后,单词计数要重新对队列中的所有数据从头到尾再次计算,对吗?
    2. 在没有指定时间窗口的情况下,应用读取队列消息的周期是什么呢?Stream API也是通过poll方式读取队列数据吗?
    3. “所以,事件的 Key 也必须要携带时间窗口的信息。”,这里携带时间窗口信息是指什么呢?能举个例子吗?

    谢谢!
    展开

    作者回复: 1. 不需要,它会记录消费位移的
    2. 也是通过poll的,因为本质上就是consume-process-produce的流程
    3. “事件的 Key 也必须要携带时间窗口的信息” 这句话是指因为引入了时间窗口,所以key中带了时间窗口的信息,比如窗口开始时间,结束时间等

    
    
  • 曾轼麟
    2019-09-10
    老师有个疑问,如果按照这个事例,我使用kafka普通client的batch方式消费,搭载JAVA8的lambda不是实现更快捷吗?而且我中间还能自己通过代码写入各种数据库或者其它持久化方式?lambda本身也支持map—reduce的方式计算,而且consumer group本身也是一种负载均衡的思路

    作者回复: 如果你自己写java代码肯定是可以的,不过这样你就要自行处理负载均衡、故障转移等问题了啊

    
    
  • icejoywoo
    2019-09-07
    count之前加上.windowedBy(TimeWindows.of(Duration.ofMinutes(5))),应该就可以了吧

    作者回复: 是的:)

     1
    
我们在线,来聊聊吧