在apache flink流处理中,join操作与connect有何不同?因此,coprocessfunction和processjoinfunction有何不同?这是由coprocessfunction提供的ontimer函数吗?你能提供一个例子用例适合于以互斥的方式连接/连接吗。
mkshixfv1#
差别相当大。在join的情况下,它的工作方式或多或少类似于sql内部join,因此您还需要提供用于连接的字段 Join 在窗口上计算。因此,基本上您为每个窗口定义键,这些窗口将用于连接和计算结果。这个 ProcessJoinFunction 允许您在处理连接的元素后处理它们,但您无法控制连接机制本身,即已连接的元素对将传递给 ProcessJoinFunction 万一 connect 您还可以定义键(但不必这样做),但这些键将不用于连接,而是用于控制通过操作符的并行示例的流和键控状态。因此,在connect的情况下,没有逻辑负责如何连接元素,而是负责stream1方法中的每个元素 processElement1 将为stream2方法中的每个元素调用和 processElement2 将被调用。因此,如果您想执行某种类型的连接,就必须自己实现逻辑。
Join
ProcessJoinFunction
connect
processElement1
processElement2
1条答案
按热度按时间mkshixfv1#
差别相当大。在join的情况下,它的工作方式或多或少类似于sql内部join,因此您还需要提供用于连接的字段
Join
在窗口上计算。因此,基本上您为每个窗口定义键,这些窗口将用于连接和计算结果。这个
ProcessJoinFunction
允许您在处理连接的元素后处理它们,但您无法控制连接机制本身,即已连接的元素对将传递给ProcessJoinFunction
万一connect
您还可以定义键(但不必这样做),但这些键将不用于连接,而是用于控制通过操作符的并行示例的流和键控状态。因此,在connect的情况下,没有逻辑负责如何连接元素,而是负责stream1方法中的每个元素processElement1
将为stream2方法中的每个元素调用和processElement2
将被调用。因此,如果您想执行某种类型的连接,就必须自己实现逻辑。