老师, 我最近遇到个问题还望帮忙提点一下:
1. 需求: 统计实时订单量(类似)
2. 通过maxwell读取binlog数据同步到kafka
3. spark-streaming处理kafka里面的数据
4. spark-sql定义不同的实时报表
这样做的时候, 对于不同sql定义的报表我就懵了,
假如昨天需求方写了10个SQL放到数据库, 然后我们启动流计算, 提交job到spark, 那么10个实时的报表就开始变动起来了
但是今天需求方说, 这里还有两个指标需要统计一下, 就给我了2条SQL,
(先说明下前提, maxwell把mysql的数据提取出来提交到了一个kafka的topic里面)
疑问点出来了:
1. 如果从新提交一个2条sql的job, 就得独立消费kafka数据, 否则数据有遗漏, (相当于一条河流, 做了多个截断), 与其对比的是: 在之前提交10个SQL的job中, 先写好SQL来源是动态从某个数据库某张表取出来的, 然后数据流来了直接共享server进行计算, (相当于一条河流一次截断, 多个筛选, 复用了job的提交和kafka消费这一步), 不知道后者是否可行, 或是有什么坑?
2. 假如选择了问题1 的第一种情况, 且假如重复消费很消耗新能, 然后我想到了替代方案,不同的数据库binlog放到不同的kafka的topic中, 计算出结果之后再聚合, (这样做缺点是不是就是开发程序非常麻烦呢)?
目前存在如上两个疑问, 我目前觉得第一个问题的第二种情况比较靠谱, 希望可以求证, 或者我原本思考方向就是错的, 还望老师帮忙指点一下
展开