60-330-000-使用-窗口TopN分析与实现

838 篇文章 847 订阅 ¥99.90 ¥299.90
本文介绍了如何使用Flink实时统计每10分钟内各个地域维度下销售额排名前10的商品。通过Kafka数据源,提取事件时间,设置窗口,使用ReduceFunction聚合销售额,再通过TreeSet实现TopN排序,最后讨论了数据处理的关键点和效率优化。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九师兄

你的鼓励是我做大写作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值