Apache Flink 漫谈系列 - 一连查询(Continuous Queries)
上图描写了一个双流JOIN的场景,双流JOIN的底层实现会将左(L)右(R)两面的数据都耐久化到Apache Flink的State中,当L流入一条变乱,起首会耐久化到LState,然后在和RState中存储的R中全部变乱举办前提匹配,这样的逻辑假如R流product_id为P001的产物贩卖记录已经流入4条,L流的(P001, 48) 流入的时辰会匹配4条变乱流入下流(join_sink)。 2. 题目 上面双流JOIN的场景,我们发明着实inventory和sales表是有营业的PK的,也就是两张表上面的product_id是独一的,可是因为我们在Sorure上面无法界说PK字段,表上面全部的数据城市以append only的方法从source流入到下流计较节点JOIN,这样就导致了JOIN内部全部product_id沟通的记录城市被匹配流入下流,上面的例子是 (P001, 48) 来到的时辰,就向下流流入了4笔记录,不难想象每个product_id沟通的记录城市与汗青上全部变乱举办匹配,进而操纵下流数据压力。 那么这样的压力是须要的吗?从营业的角度看,不是须要的,由于对付product_id沟通的记录,我们只必要对阁下双方最新的记录举办JOIN匹配就可以了。好比(P001, 48)到来了,营业上面只必要右流的(P001, 22)匹配就好,流入下流一条变乱(P001, 48, 22)。 那么今朝在Apache Flink上面怎样做到这样的优化呢? 3. 办理方案 上面的题目基础上我们要构建一张有PK的动态表,这样凭证营业PK举办更新处理赏罚,我们可以在Source后头添加group by 操纵出产一张有PK的动态表。如下:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |