keyBy的时候调用一次,sink的时候应该也会调用一次。因为keyBy是hash分区,前后是不chain在一起的。sink部分处理输入的ele的时候需要基于keySelector获取key。

Lei Wang <leiwang...@gmail.com> 于2022年3月1日周二 10:49写道:

> 接收 kafka 的数据后 keyBy, sinkTest 中什么也没做。
>
> env.addSource(consumer).keyBy(new KeySelector<String, String>() {
>     @Override
>     public String getKey(String value) throws Exception {
>         System.out.println(value);
>         return value;
>     }
> }).addSink(new SinkTest(1));
>
>
> 我自己做测试,每发送一条消息console 会打印两次,也就是 System.out.println(value) 被调用了两次。
>
> 为什么会这样呢,哪个地方还调用了 getKey 这个函数呢?
>
>
> 谢谢,
>
> 王磊
>

回复