问题描述
我正在考虑将 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
类型,可以在这些情况下提供帮助。