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