这是一个创建于 1342 天前的主题,其中的信息可能已经有所发展或是发生改变。
不一定是叫事件驱动任务流框架,我实在没法给出个准确的工具类型的名称。
需求是这样的。当前数仓里表会从生产库中的先导进来,然后各种 join,汇总,过滤,排序一系列操作后又产生一堆表。这一堆表结合各个业务部门需求,可能又各种计算后再次产生一堆表。
表和表之间有比较复杂的血缘关系。每天晚上都会把需要的数据从生产库抽到数仓中后。然后用 spark 把按照每个表的创建时间的顺序,执行各种计算,产生那一堆堆的表。所以的一切都是按照时间来傻傻执行的,比如导数 1 点,那么安全起见,1 点半开始 spark 的任务运行,然后任务是按照创建时间顺序来调度运行的。
这样的结构问题逐渐显现。随着数据增多,和数仓中各种表越来越多。spark 生成的时间现在一个晚上快生成不完了。其中主要问题是,有大量的表是无需计算的被计算了。比如销售部门的一张表,是由仓储部门的表各种计算产生的,而这张仓储部门的表一周才更新一次,所以销售部门的表一周一次计算就够了。但是现在系统是傻傻的每天都执行,把所有数仓中的表都计算一遍,这表多了自然就扛不住了。
目前表的血缘关系已经有了。需要的是,仓储表开始往数仓导数并且成功后,触发计算并产生对应销售部门的表,这个表又计算成功后,接着触发下面的依赖表。
此外每个操作(导入数据,执行 spark 各种计算等)对应各个步骤的事件也都有了。现在需要一个类似 iPhone 上面快捷指令或者 mas 上面自动操作那样的执行框架,根据血缘关系进行编排,然后根据各个事件来执行对应的表计算。
这部分觉得功能不和公司业务绑定应该有类似工具,就不想重复造轮子了。但是找了好些,要么感觉是个小项目不靠谱,要么就不是以消息为基础,而是预先构造一个执行对象,把每一步设定好开始各个执行步骤,基于消息的可以单机跑,但是这个预先的执行对象的单机不太好控制整个集群中任务。
拜托各位,有没有什么成熟的框架或者工具推荐的。
|
|
1
bugFactory 2021-01-18 10:36:11 +08:00
按我的理解,你这里需要一个更好的调度系统
|