如何设置作用于多个流的 Flink Operator

问题描述

我正在考虑将 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 的数据到来时进行一些计算。

解决方法

您在 Flink 中组合流的选项包括 <ComboBox ItemsSource="{Binding DataContext.ListaPedidosPendientes,RelativeSource={RelativeSource FindAncestor,AncestorType=UserControl}}" DisplayMemberPath="numero"> <ComboBox.Style> <Style TargetType="{x:Type ComboBox}"> <Setter Property="Visibility" Value="Visible"/> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="False"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Items.Count}" Value="0"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> </ComboBox.Style> </ComboBox> (用于合并 n 个相同类型的流),union 用于使用 CoFlatMap 或 CoProcessFunction 联合处理任意类型的两个流,以及 {{1 }}。

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

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