多流关联
在流式计算中常常需要把两个实时流进行主键关联,以得到对应的实时明细表。在离线系统中两个表关联是非常简单的,因为离线计算在任务启动时已经可以获得两张表的全量数据,只要根据关联键进行分桶关联就可以了。但流式计算不一样,数据的到达是一个增量的过程,并且数据到达的时间是不确定的和无序的,因此在数据处理过程中会涉及中间状态的保存和恢复机制等细节问题。
比如A表和B表使用ID进行实时关联,由于无法知道两个表的到达顺序,因此在两个数据流的每条新数据到来时,都需要到另外一张表中进行查找。如A表的某条数据到达,到B表的全量数据中查找,如果能查找到,说明可以关联上,拼接成一条记录直接输出到下游,但是如果关联不上,则需要放在内存或外部存储中等待,直到B表的记录也到达。多流关联的一个关键点就是需要相互等待,只有双方都到达了,才能关联成功。
下面通过例子(订单信息表和支付信息表关联)来说明,如图