You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by sherlock zw <zw...@LIVE.COM> on 2020/11/19 11:34:09 UTC

Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题

大佬们:
       在 Flink 1.10.x 中的 keyBy 算子可以同时按多个字段分组,比如 map.keyBy(0,1),但在 1.11.x 版本中这种方式被弃用了,看了下源码好像不支持按多字段分组了?还是有别的其他形式?
       如果我想按多个字段分组的话需要怎么操作?
       请大佬指点!

答复: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题

Posted by sherlock zw <zw...@LIVE.COM>.
多谢指点,试了下,返回 Tuple 类型作为 key 是可以按多个字段进行分组的,拼接成 String 的话应该也是可以的
final SingleOutputStreamOperator<Tuple3<String, String, Double>> sum = flatMap
                .keyBy(new KeySelector<Tuple3<String, String, Double>, Tuple2<String, String>>() {
                    @Override
                    public Tuple2<String, String> getKey(Tuple3<String, String, Double> tuple3) throws Exception {
                        return Tuple2.of(tuple3.f0, tuple3.f1);
                    }
                })
                .sum(2);

-----邮件原件-----
发件人: 赵一旦 <hi...@gmail.com> 
发送时间: 2020年11月23日 14:35
收件人: user-zh@flink.apache.org
主题: Re: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题

(1)返回字符串,自己拼接就可以。
(2)返回Tuple类型作为Key。
1.10到1.11相当于是去除了多key的辅助keyBy方法,本身内部就是组成tuple。原因不清楚。

sherlock zw <zw...@live.com> 于2020年11月20日周五 上午11:18写道:

> 我看了现在的 flink 1.11 的 keyBy 的代码,是使用的KeySelector<T, K>
> key,但每次只能返回一个字段,不支持返回多个字段,也就说明了一次只能按一个字段去分组(PS: test.keyBy(t ->
> t.f0)),如果我想按多个字段进行分组的话该怎么操作呢?
>
> -----邮件原件-----
> 发件人: guanxianchun <ps...@163.com>
> 发送时间: 2020年11月19日 20:53
> 收件人: user-zh@flink.apache.org
> 主题: Re: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题
>
> flink-1.11使用KeySelector<IN, KEY>
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
>

Re: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题

Posted by 赵一旦 <hi...@gmail.com>.
(1)返回字符串,自己拼接就可以。
(2)返回Tuple类型作为Key。
1.10到1.11相当于是去除了多key的辅助keyBy方法,本身内部就是组成tuple。原因不清楚。

sherlock zw <zw...@live.com> 于2020年11月20日周五 上午11:18写道:

> 我看了现在的 flink 1.11 的 keyBy 的代码,是使用的KeySelector<T, K>
> key,但每次只能返回一个字段,不支持返回多个字段,也就说明了一次只能按一个字段去分组(PS: test.keyBy(t ->
> t.f0)),如果我想按多个字段进行分组的话该怎么操作呢?
>
> -----邮件原件-----
> 发件人: guanxianchun <ps...@163.com>
> 发送时间: 2020年11月19日 20:53
> 收件人: user-zh@flink.apache.org
> 主题: Re: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题
>
> flink-1.11使用KeySelector<IN, KEY>
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
>

答复: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题

Posted by sherlock zw <zw...@LIVE.COM>.
我看了现在的 flink 1.11 的 keyBy 的代码,是使用的KeySelector<T, K> key,但每次只能返回一个字段,不支持返回多个字段,也就说明了一次只能按一个字段去分组(PS: test.keyBy(t -> t.f0)),如果我想按多个字段进行分组的话该怎么操作呢?

-----邮件原件-----
发件人: guanxianchun <ps...@163.com> 
发送时间: 2020年11月19日 20:53
收件人: user-zh@flink.apache.org
主题: Re: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题

flink-1.11使用KeySelector<IN, KEY>



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: Flink 1.10 和 Flink 1.11 中 keyBy 算子聚合多个字段的问题

Posted by guanxianchun <ps...@163.com>.
flink-1.11使用KeySelector<IN, KEY>



--
Sent from: http://apache-flink.147419.n8.nabble.com/