Flink实战-统计每个店铺每日GMV
接到一个实时指标的需求,计算每个店铺每日的实时GMV。这个实时指标不难,对每个店铺、每日分组累计销售额就OK。
就是想的这么简单,结果在上面踩了坑。
问题
计算这个任务是用 Stream API 实现的,对每个shopId和时间天进行keyby,具体代码:
// payTime 转时间格式 <这个后续有优化的方案>
SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
shopOrderSteam
.keyBy(a->{
final String dateStr = fm.format(new Date(a.getPayTime()));
return dateStr + a.getShopId(); // key = shopId + date
})
.reduce((x,y)->{
y.setTodayCount(x.getTodayCount() + 1); // todayCount:今日订单数 初始化是1
y.setTodaySales(x.getTodaySales() + y.getTodaySales()); // 今日总销售额,初始化是订单price
return y; // 累计值放入后续来的数据中,并吐出
});
对代码中部分做说明:
- 为了

最低0.47元/天 解锁文章
3991

被折叠的 条评论
为什么被折叠?



