【问题标题】:How to set a Flink Operator acting on many streams如何设置作用于多个流的 Flink Operator
【发布时间】:2021-07-19 20:56:34
【问题描述】:

我正在研究将 Flink 用于流引擎。我来自 apache-storm,据我所知,storm 的 Bolt 类似于 Flink 的任务/操作员。在暴风雨中可以拥有

 builder.setBolt("TEST", new TestBolt(),5)
        .fieldsGrouping("Source1", "ID1")
        .fieldsGrouping("Source2","ID2)
        .fieldsGrouping("Source3","ID1")
        .allGrouping("Source4");

如何使用 Flink 实现类似的功能。基本上我希望我的测试 Bolt 具有来自 Source2、source3、source4 的状态,并在来自源 1 的数据到来时进行一些计算。

【问题讨论】:

    标签: apache-flink apache-storm flink-streaming


    【解决方案1】:

    您在 Flink 中合并流的选项包括 union(用于合并 n 个相同类型的流)、connect(用于使用 CoFlatMap 或 CoProcessFunction 联合处理任意类型的两个流)和 broadcast

    在某些情况下,最好构建一种二叉树,例如连接流 1 和 2 以形成流 12,分别连接流 3 和 4 以创建流 34,然后将流 12 与流 34 连接。

    另一种方法是创建某种联合类型,它可以保存来自任何流的对象,然后使用联合来合并流。 Flink 包含一个 Either 类型,在这些情况下可能会有所帮助。

    【讨论】:

    • 感谢@David Anderson,Source1-4 的类型都不同。我如何结合说 Source1,2,3 并与 Source4 连接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2019-12-07
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    相关资源
    最近更新 更多