Apache Flink 漫谈系列 - 持续查询(Continuous Queries)
代码结构: 示意图: 如上方式可以将无PK的source经过一次节点变成有PK的动态表,以Apache Flink的retract机制和业务要素解决数据瓶颈,减少计算资源的消耗。 说明1: 上面方案LAST_VALUE是Alibaba企业版Flink的功能,社区还没有支持。 4. Apache Flink Sink 在Apache Flink上面可以根据实际外部存储的特点(是否支持PK),以及整体job的执行plan来动态推导Sink的执行模式,具体有如下三种类型: Append 模式 - 该模式用户在定义Sink的DDL时候不定义PK,在Apache Flink内部生成的所有只有INSERT语句; Upsert 模式 - 该模式用户在定义Sink的DDL时候可以定义PK,在Apache Flink内部会根据事件打标(retract机制)生成INSERT/UPDATE和DELETE 语句,其中如果定义了PK, UPDATE语句按PK进行更新,如果没有定义PK UPDATE会按整行更新; Retract 模式 - 该模式下会产生INSERT和DELETE两种信息,Sink Connector 根据这两种信息构造对应的数据操作指令; 九、小结 本篇以MySQL为例介绍了传统数据库的静态查询和利用MySQL的Trigger+DML操作来模拟持续查询,并介绍了Apache Flink上面利用增量模式完成持续查询,并以双流JOIN为例说明了持续查询可能会遇到的问题,并且介绍Apache Flink以为事件打标产生delete事件的方式解决持续查询的问题,进而保证语义的正确性,完美的在流计算上支持续查询。 作者:孙金城,花名 金竹,目前就职于阿里巴巴,自2015年以来一直投入于基于Apache Flink的阿里巴巴计算平台Blink的设计研发工作。 【本文为51CTO专栏作者“金竹”原创稿件,转载请联系原作者】 (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |