Flink实战 - 统计每个店铺每日GMV

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; // 累计值放入后续来的数据中,并吐出
        });

对代码中部分做说明:

  • 为了
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值