1、案例解析 2、案例实战 找出搜索平台上用户每天搜索排名前5名的产品 元数据:Date、User、Item、City、Device 总体思路:混合使用Spark SQL和Spark Core的内容 一、原始的ETL,过滤数据后产生目标数据数据,在实际企业中可能过滤条件非常复杂(进行广播),使用RDD的filter等进行操作; 二、对过滤后的目标数据进行制定条件的查询。查询条件有可能非常复杂(进行广播),使用RDD的filter算子; 三、由于商品是分为种类的,我们在得出最终结果之前,首先会基于商品进行UV,当然也可以对用户访问商品的PV进行分析 此时我们要对商品进行UV计算的话,必须构建K-V的RDD,例如构建成为(date#Item,userID)以方便进行groupByKey操作 在调用了groupByKey之后对user进行去重,并计算出每一天每一种商品的UV,最终计算出来的结果的数据类型(date#Item,UV) 四、使用开窗函数row_number统计出每日商品UV前5名的内容,row_number() OVER (PARTITION BY date ORDER BY uv DESC) rank 此时会产生以date、item、uv为Row的DataFrame 五、DataFrame转成RDD,根据日期进行分组并分析出每天排名前5位的热搜索Item 六、进行Key-Value交换,然后进行调用sortByKey进行点击热度排名 七、再次进行Key-Value交换,得出目标数据(date#Item,UV) 八、通过RDD直接操作Mysql等把结果放入生产系统中的DB中,再通过Java EE等Server技术可视化结果以供市场营销人员、仓储调度系统、快递系统、管理决策人员使用数据创造价值。 当然也可以放在Hive中,Java EE等技术通过JDBC等连接访问Hive,当然也可以就放在Spark SQL中,通过Thrift技术供Java EE使用等;但是像双十一等时候,一般首选放在Redis中,这样可以实现类似秒杀系统的响应速度。
|