使用Flink消费Kafka的dwd层数据,实时统计商城中销售量前3的商品,格式问题

使用Flink消费Kafka的dwd层数据,实时统计商城中销售量前3的商品,将key设置成top3itemamount存入Redis中(value使用String数据格式,value为前3的商品信息并且外层用[]包裹,其中按排序依次存放商品id:销售量,并用逗号分割)。使用redis cli以get key方式获取top3itemamount值。

改题目要求格式实例为:

top3itemamount:[1:700,42:500,41:100]

那么我们在实时计算中怎么把格式写成这样呢,如果直接这样写

          res.append("[" + mapList(0)._1 + ":" + mapList(0)._2 + "," + mapList(1)._1 + ":" + mapList(1)._2 + "," + mapList(2)._1 + ":" + mapList(2)._2 + "]")
          collector.collect(res.toString())

会导致索引越界(比如一开始进来第一条元素,mapList集合中只有一个元素,故无法取到索引为1,2的元素)

所以我们可以加上一个判断,判断这个mapList里是否有三个元素

 if (mapList.indices.size>=3){
   res.append("[" + mapList(0)._1 + ":" + mapList(0)._2 + "," + mapList(1)._1 + ":" + mapList(1)._2 + "," + mapList(2)._1 + ":" + mapList(2)._2 + "]")
 }
 collector.collect(res.toString())

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zyoy大数据机器学习

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值