一、需求分析

1、根据用户指定的日期范围,统计各个区域下的最热门的top3商品

  1. 区域信在哪里?各个城市信息不怎么变化,存储在mysql中
  2. hive用户行为数据,hive和mysql城市信息 join(Hive和mysql 异构数据源使用,技术点1)关联之后是RDD,RDD转换成DataFrame,注册临时表,第二个技术点
  3. 各个区域下各个商品的点击量,保留每个区域的城市列表数据?自定义UDAF函数,group_concat_distinct() 自定义聚合函数,对多行数据
  4. product_id,join hive表中的商品信息,商品信息在哪里?Hive,商品的经营类型是什么?自定义UDF函数,get_json_object(),if() 自定义单行行数 对单行数据
  5. 获取每个区域的点击量top3商品?开窗函数:给每个区域打上级别标记,西北大区,C类 北上广深 A区
  6. SparkSQL的数据倾斜解决方案,双重groupby,随机key以及扩容表(自定义UDF函数,random_key()) 内置reduce join转为map join shuffle并行度

2、 操作流程

二、 技术方案

1、查询task,获取日期范围,通过Spark SQL,查询user_visit_action表中的指定日期范围内的数据,过滤出,商品点击行为,click_product_id is not null;click_product_id != ‘NULL’;click_product_id != ‘null’;city_id,click_product_id
2、使用Spark SQL从MySQL中查询出来城市信息(city_id、city_name、area),用户访问行为数据要跟城市信息进行join,city_id、city_name、area、product_id,RDD,转换成DataFrame,注册成一个临时表
3、Spark SQL内置函数(case when),对area打标记(华东大区,A级,华中大区,B级,东北大区,C级,西北大区,D级),area_level
4、计算出来每个区域下每个商品的点击次数,group by area, product_id;保留每个区域的城市名称列表;自定义UDAF,group_concat_distinct()函数,聚合出来一个city_names字段,area、product_id、city_names、click_count
5、join商品明细表,hive(product_id、product_name、extend_info),extend_info是json类型,自定义UDF,get_json_object()函数,取出其中的product_status字段,if()函数(Spark SQL内置函数),判断,0 自营,1 第三方;(area、product_id、city_names、click_count、product_name、product_status)
6、开窗函数,根据area来聚合,获取每个area下,click_count排名前3的product信息;area、area_level、product_id、city_names、click_count、product_name、product_status
7、结果写入MySQL表中
8、Spark SQL的数据倾斜解决方案?双重group by、随机key以及扩容表(自定义UDF函数,random_key())、Spark SQL内置的reduce join转换为map join、提高shuffle并行度
9、本地测试和生产环境的测试

数据添加表

基础数据的准备和设计

1、MySQL表中,要有city_info,city_id、city_name、area
2、Hive表中,要有一个product_info表,product_id、product_name、extend_info
3、MySQL中,设计结果表,task_id、area、area_level、product_id、city_names、click_count、product_name、product_status
创建city_info表并插入数据

CREATE DATABASE /*!32312 IF NOT EXISTS*/`spark_project` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `spark_project`;/*Table structure for table `city_info` */DROP TABLE IF EXISTS `city_info`;CREATE TABLE `city_info` (`city_id` int(11) DEFAULT NULL,`city_name` varchar(255) DEFAULT NULL,`area` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `city_info` */insert  into `city_info`(`city_id`,`city_name`,`area`) values (0,'北京','华北'),(1,'上海','华东'),(2,'南京','华东'),(3,'广州','华南'),(4,'三亚','华南'),(5,'武汉','华中'),(6,'长沙','华中'),(7,'西安','西北'),(8,'成都','西南'),(9,'哈尔滨','东北');

创建area_top3_product

CREATE DATABASE /*!32312 IF NOT EXISTS*/`spark_project` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `spark_project`;/*Table structure for table `area_top3_product` */DROP TABLE IF EXISTS `area_top3_product`;CREATE TABLE `area_top3_product` (`task_id` int(11) DEFAULT NULL,`area` varchar(255) DEFAULT NULL,`area_level` varchar(255) DEFAULT NULL,`product_id` int(11) DEFAULT NULL,`city_infos` varchar(255) DEFAULT NULL,`click_count` int(11) DEFAULT NULL,`product_name` varchar(255) DEFAULT NULL,`product_status` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Spark 电商分析 Spark-sql 统计各区域热门商品统计 需求、设计、数据库相关推荐

  1. 99.Spark大型电商项目-各区域热门商品统计-模块介绍

    目录 各区域热门商品统计 作业提交 大数据方向的职业发展规划 用户行为分析意义 本篇文章记录各区域热门商品统计-模块介绍. 各区域热门商品统计 需求:根据用户指定的日期范围,统计各个区域下的最热门的t ...

  2. 人工智能-推荐系统-模块01:离线统计模块【使用SparkSQL(基于Scala语言/Python语言)进行离线统计分析:历史热门商品统计、近期热门商品统计、商品平均评分统计...】

    一.基于scala语言的SparkSQL离线统计分析 1.将数据导入MongoDB数据库 DataLoader.scala import com.mongodb.casbah.commons.Mong ...

  3. Spark综合项目:企业电商分析平台

    文章目录 1. 项目背景 2. 项目架构 3. 需求分析 离线模块开发 1.用户访问Session分析 2. 页面单跳转化率统计 3. 区域热门商品统计 实时模块开发 1. 项目背景 该项目来源于尚硅 ...

  4. spark企业级电商分析平台项目实践(一)项目介绍和需求分析

    前言 这个专栏的系列文章,是一个电商分析平台项目实践过程中的记录和总结. 基于 spark2.4.x 和 scala2.11.x 一. 项目概述 访问电商网站时,我们的一些访问行为会产生相应的埋点日志 ...

  5. 大数据开发实战系列之Spark电商平台

    源于企业级电商网站的大数据统计分析平台,该平台以 Spark 框架为核心,对电商网站的日志进行离线和实时分析. 该大数据分析平台对电商网站的各种用户行为(访问行为.购物行为.广告点击行为等)进行分析, ...

  6. 大数据之电商分析系统(一)

    大数据之电商分析系统(一) 一:项目介绍 ​ 本项目来源于企业级电商网站的大数据统计分析平台, 该平台以 Spark 框架为核心, 对电商网站的日志进行离线和实时分析.该大数据分析平台对电商网站的各种 ...

  7. Flink项目实践【一】实时热门商品统计

    第1章 项目整体介绍 1.1 电商的用户行为 电商平台中的用户行为频繁且较复杂,系统上线运行一段时间后,可以收集到大量的用户行为数据,进而利用大数据技术进行深入挖掘和分析,得到感兴趣的商业指标并增强对 ...

  8. spark项目实战:电商分析平台之各个范围Session步长、访问时长占比统计(需求一)

    spark项目实战:电商分析平台之各个范围Session步长.访问时长占比统计(需求一) 项目基本信息,架构,需要一览 各个范围Session步长.访问时长占比统计概述 各个范围Session步长.访 ...

  9. spark项目实战:电商分析平台之项目概述

    spark项目实战:电商分析平台之项目概述 目录 项目概述 程序架构分析 需求解析 初始代码和完成代码存放在github上面 1. 项目概述 在访问电商网站时,我们的一些访问行为会产生相应的埋点日志( ...

  10. 【Spark】Spark电商数据分析

    Spark电商数据分析 数据展示与分析 需求:Top10 热门品类 需求分析 实现方法一 实现方法二 实现方法三 实现方法四 需求:Top10 热门品类中每个品类的 Top10 活跃 Session ...

最新文章

  1. apache httpd server安装的一个问题
  2. linux ext4 文件大小,[svc]为何linux ext4文件系统目录默认大小是4k?
  3. 推荐业务多目标建模算法介绍:MMOE、OMOE、Shared-Bottom
  4. 详解 EnumWindows 与 EnumWindowsProc - 回复 SplendourChiang 的问题
  5. 计数显示器c语言程序,51单片机计数显示器Proteus仿真程序
  6. MySQL/InnoDB中,对于锁的认识
  7. JS学习总结(3)——运算符/字符串
  8. LCA Tarjan
  9. 金融项目app业务及测试策略
  10. miui kindle安装目录
  11. Cauchy-Schwarz不等式
  12. 方向键按键转发,模仿笔记本Fn按键
  13. 思科路由器配置NAT地址转换
  14. Hyper-v集群高可用性配置
  15. dos命令批量修改图片名称
  16. Java 多线程学习笔记(狂神)
  17. ZYNQ7000学习(十八)多路 PWM 原理分析以及实现试验
  18. linux ghost视频教程,Linux攻略 用Ghost备份Linux系统的方法
  19. altium designer创建圆形实心填充
  20. 第一次Rosetta Stone总结

热门文章

  1. javaWeb学习第四天------jQuery入门学习
  2. Linux —— 线程
  3. TGAT:INDUCTIVE REPRESENTATION LEARNING ON TEMPORAL GRAPHS 论文笔记
  4. 离散数学课程论文:探讨离散数学中的二元关系
  5. 默然纯粹映秋水丨量子力学奠基人狄拉克的一生
  6. 目前最新传智播客PHP培训课程(第42期)
  7. 基于JAVA病患互助平台计算机毕业设计源码+系统+lw文档+部署
  8. 2017/07/25 杂题(完全不可做题(划去))选讲
  9. 安卓emulator 命令行报错:could not launch ‘sdk-path/../emulator/qemu/darwin-x86_64/qemu-system-i38
  10. nnUNet论文阅读