关闭

day80sparkSQL网站搜索综合实例

158人阅读 评论(0) 收藏 举报
分类:


目的:找出搜索平台上用户明天搜索排名前五名的产品

1、原始的ETL过滤数据后产生目标数据

广播的原理,过滤是发生在work

2、对过滤后的目标数据进行指定条件的查询,查询条件又可能非常复杂(进行广播(广播过滤条件)),进行RDD的filter的算子;

3、对于商品时分为种类的,我们在得出最终结果之前,首先会基于商品UV(对于用户访问商品的PV)

  此时我们要对商品进行UV计算的话,必须构建K-V的RDD,例如过程构建成为(date#Item(性能考虑字段组拼), userID)以方便进行grouoByKey的操作。

               在调用了groupByKey之后对user进行去重,并计算出每一天每一种商品的UV,最终计算出来的结果的数据类型(date#Item, userID)

4、使用开窗函数row_number 统计出每日商品UV前5名的内容row_number() over (parition By date order by uv desc ) rank

此时会产生以date、item uv为row的DataFrame

5、根据日期进行分组并分析出每天排名前5位的热搜索Item

6、进行key-value交换,然后进行调用sortBykey进行电击热度排名

7再次进行key-value交换,得出目标数据,得出目标数据(date#item, UV)的格式

8、通过RDD直接操作Mysql吧结果放入生产系统中的DB中,通过javaee 等servlet技术实现先可视化结果供市场营销人员、调度仓库、管理人员使用数据

当然可以放在hive中,JavaEE等技术通过JDBC等连接访问hive;

可以放在sparkSQL中,通过 Thrift技术提供JavaEE 使用等。

如果是双十一的时候一般首选放在redis中,这样可以实现类似秒杀系统的响应速度

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场