开发者社区> 问答> 正文

Apache Flink:如何处理三个流

"我想在一个运算符中接收和处理三个流。例如,Storm中实现的代码如下:

builder.setBolt(“C_bolt”,C_bolt(),parallelism_hint)

            .fieldsGrouping(“A_bolt”,“TRAINING”,新字段(“word”))
            .fieldsGrouping(“B_bolt”,“ANALYSIS”,新字段(“word”))
            .allGrouping(“A_bolt”,“SUM”);

在Flink中,实现了SUM流(A_bolt的SideOutput)和TRAINING流(A_bolt)的处理:

SingleOutputStreamOperator > A_bolt;
DataStream > Sum = A_bolt.getSideOutput(outputTag).broadcast();
DataStream > B_bolt;
DataStream C_bolt = A_bolt

                    .keyBy(new KeySelector <Tuple3 <String,Integer,Boolean>,String>(){
                                @覆盖
                                public String getKey(Tuple3 <String,Integer,Boolean> in)抛出异常{
                                    return in.f0;
                                }
                            })
                    .connect(SUM)
                    .flatMap(new Process())
                    .setParallelism(平行度);

但我不知道如何添加ANALYSIS流(B_bolt)。"

展开
收起
flink小助手 2018-11-28 15:58:00 3094 0
1 条回答
写回答
取消 提交回答
  • flink小助手会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关flink的问题及回答。

    "Flink仅支持单输入和双输入流操作符。你的选择是:

    使用union()创建一个合并流,其中包含来自所有三个流的所有元素(这些流必须具有相同的类型,尽管您可以使用Either来协助这一点)。
    在使用coFlatMap组合两个流之后,将该初步结果连接到第三个流,使用另一个coFlatMap(或coProcessFunction)来完成处理。
    或者,在你情况下,这两种技术的组合可能更为可取"

    2019-07-17 23:16:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载

相关镜像