1.美图
2.概述
TopN 的需求场景不管是在离线计算还是实时计算都是比较常见的,例如电商中计算热门销售商品、广告计算中点击数前N的广告、搜索中计算搜索次数前N的搜索词。topN又分为全局topN、分组topN, 比喻说热门销售商品可以直接按照各个商品的销售总额排序,也可以先按照地域分组然后对各个地域下各个商品的销售总额排序。本篇以热门销售商品为例,实时统计每10min内各个地域维度下销售额top10的商品。
这个需求可以分解为以下几个步骤:
- 提取数据中订单时间为事件时间
- 按照区域+商品为维度,统计每个10min中的销售额
- 按照区域为维度,统计该区域的top10 销售额的商品
3.时间提取
数据源类型是Kafka, 数据为订单数据包含:订单id、订单时间、商品id、区域id、订单金额(包含用户Id在这里省略)
case class Order(orderId: String, orderTime: Long, gdsId: String, amount: Double, areaId: String)
我们这里统计的每10min内的数据,希望按照真实的订单时间统计,那么使用事件时间EventTime,考虑到可能存在数据乱序问题,允许最大延时为30s
val orderStream=ds