35.top10热门品类之需求回顾以及实现思路分析

来源:互联网 发布:留言回复数据库设计 编辑:程序博客网 时间:2024/05/18 02:40

本文为《Spark大型电商项目实战》 系列文章之一,主要介绍session访问分析里的top10热门品类模块,本文主要进行需求分析和实现思路。

需求回顾:top10热门品类

计算出来通过筛选条件的那些session,他们访问过的所有品类(点击、下单、支付)。按照各个品类的点击、下单和支付次数,降序排序,获取前10个品类,也就是筛选条件下的那一批session的top10热门品类。

排序优先级

点击、下单和支付次数:优先按照点击次数排序、如果点击次数相等,那么按照下单次数排序、如果下单次数相当,那么按照支付次数排序。

需求意义

这个需求是很有意义的,因为这样,就可以让数据分析师、产品经理、公司高层,随时随地都可以看到自己感兴趣的那一批用户,最喜欢的10个品类,从而对自己公司和产品的定位有清晰的了解,并且可以更加深入的了解自己的用户,更好的调整公司战略。

二次排序介绍

如果我们就只是根据某一个字段进行排序,比如点击次数降序排序,那么就不是二次排序;
二次排序,顾名思义,就是说,不只是根据一个字段进行一次排序,可能是要根据多个字段,进行多次排序的,比如根据点击、下单和支付次数,依次进行排序,就是二次排序。

Spark中进行二次排序需要使用sortByKey算子,默认情况下,它支持根据int、long等类型来进行排序,但是那样的话,key就只能放一个字段了,现在需要三个字段(点击、下单和支付),所以需要自定义key,作为sortByKey算子的key,自定义key中,封装n个字段,并在key中,自己在指定接口方法中,实现自己的根据多字段的排序算法,然后再使用sortByKey算子进行排序,那么就可以按照我们自己的key,使用多个字段进行排序。

二次排序是本模块中,最最重要和核心的一个Spark技术点。

实现思路分析

  1. 拿到通过筛选条件的那批session,访问过的所有品类;
  2. 计算出session访问过的所有品类的点击、下单和支付次数,这里可能要跟第一步计算出来的品类进行join;
  3. 自己开发二次排序的key;
  4. 做映射,将品类的点击、下单和支付次数,封装到二次排序key中,作为PairRDD的key;
  5. 使用sortByKey(false),按照自定义key,进行降序二次排序;
  6. 使用take(10)获取,排序后的前10个品类,就是top10热门品类;
  7. 将top10热门品类,以及每个品类的点击、下单和支付次数,写入MySQL数据库;
  8. 本地测试;
  9. 使用Scala来开发二次排序key。

《Spark 大型电商项目实战》源码:https://github.com/Erik-ly/SprakProject

本文为《Spark大型电商项目实战》系列文章之一,
更多文章:Spark大型电商项目实战:http://blog.csdn.net/u012318074/article/category/6744423

0 0
原创粉丝点击