在前1篇文章中,介绍到了Galaxy的增量计算性质,其state是框架内部管理的,和与Storm的简单对照。这篇文章将讲述更多Galaxy增量模型的事情,并介绍这套增量模型之上实现的Galaxy SQL和Galaxy Operator,同时会从增量角度对照Spark Streaming。
MRM模型全称为MapReduceMerge,比MapReduce做了1个Merge操作。merge阶段可与state交互,读写某个key的oldValue,并且这个merge接口还具有rollback语义。在流计算场景下,数据按时间或条数切成不同的批,批内可以做普遍意义下的MapReduce操作,批之间需要merge阶段做跨批聚合的计算。大家可以对照Spark Streaming的UpdateStateByKey操作,在1个DStream内,各个时间段内的RDD(即各批)可以通过这个接口更新1次任务内的state。而galaxy的merge本质上是1次add的进程,对应的rollback是1次delete的进程,从数据库的语义看,两个进程合起来相当因而update操作,而这俩进程都是根据1个primary key来做的,所以这件事情与spark streaming的updateStateByKey做的事情是1样的,但是细看的话,二者还是存在很大的差异。