要问我的问题,我首先必须向您显示我的数据和我提出的双键问题解决方案:
数据具有2个键x和y中的1个。有时x有时是y。一种类型的事件具有两者。
要在管道结束时进行完整的会话,我们需要将所有数据放在一个键下:x + y。
为实现这一点,我复制了两个键的消息,其中一个键通过x复制,另一个键通过y复制。然后在下面的处理器中,填充x和y类型。
每条消息如下:[Flink键,potentialX,potentialY,其余msg ...]
这是我的情况:我有一个封闭的会话消息 类型2。它将传播到密钥X处理器。这里 它将得到丰富,我们可以适当关闭 其余管道中的处理器。但是键y是 从来没有被赶出过,因为它从来没有结束过会议 消息。
现在要提出的问题是:如何关闭Y处理器中的状态?
最初,我想在浓缩器中复制类型2的味精,并为其进行sideoutput,在keyby之前获取该sideoutput,然后将其发送到正确的处理器。这是不可能的,因为sideoutput只能在创建它的处理器之后使用。然后,我发现了一些有关侧面输入的吉拉车票,但这似乎还不是一个真正的功能。
最后我想我可能会为上面提到的sideoutput做一个接收器,并在keyby上做一个源。这似乎有点古怪。
我真的希望有人能提供帮助!
编辑:
添加新图,以尝试阐明原始流程。在原始图中,我尝试通过为浓缩处理器制作2个盒子来使数据流更易于理解。我已尝试使用此新图纸使流程更正确:
答案 0 :(得分:0)
这有点复杂,但是在尝试将注销的会话与Web日志的登录会话统一起来之前,我已经看过这种模式。如果我对细节足够了解,我认为您可以从X处理器获取侧面输出,然后将其输入到Y处理器中,如下所示:
+------------+ +-------+
| +--------------------------> |
+--------+ +-------+ X | X proc | | |
| | | +-----> | sideout +-----------+ | X + Y |
| | | | | +---------> | | |
| source +-----> split | +------------+ | +----> |
| | | | | Y proc | +-------+
| | | +----------------------------> |
+--------+ +-------+ Y +-----------+