加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数据电商数据分析,电商行为日志分析,电商实时分析系统,分布

发布时间:2020-12-14 04:43:40 所属栏目:大数据 来源:网络整理
导读:一、需求分析 ------------------------------------------ 1.对用户访问session进行分析 2.JDBC辅助类封装 3.用户访问session聚合统计 4.按时间比例随机抽取session 5.获取点击、下单和支付次数排名前10的品类 6.获取top10品类的点击次数最多的10个session

一、需求分析
------------------------------------------
1.对用户访问session进行分析
2.JDBC辅助类封装
3.用户访问session聚合统计
4.按时间比例随机抽取session
5.获取点击、下单和支付次数排名前10的品类
6.获取top10品类的点击次数最多的10个session
7.复杂性能调优全套解决方案
8.十亿级数据troubleshooting经验总结
9.数据倾斜全套完美解决方案
10.模块功能演示


二、功能分析
------------------------------------------
1.可以根据使用者指定的某些条件,筛选出指定的一些用户(有特定年龄、职业、城市);
2.对这些用户在指定日期范围内发起的session,进行聚合统计,比如,统计出访问时长在0~3s的session占总session数量的比例;
3.按时间比例,比如一天有24个小时,其中12:00~13:00的session数量占当天总session数量的50%,当天总session数量是10000个,
那么当天总共要抽取1000个session,ok,12:00~13:00的用户,就得抽取1000*50%=500。而且这500个需要随机抽取。
4.获取点击量、下单量和支付量都排名10的商品种类
5.获取top10的商品种类的点击数量排名前10的session
6.开发完毕了以上功能之后,需要进行大量、复杂、高端、全套的性能调优
7.十亿级数据量的troubleshooting(故障解决)的经验总结
8.数据倾斜的完美解决方案
9.使用mock(模拟)的数据,对模块进行调试、运行和演示效果


三、企业级架构
--------------------------------------------
1.J2EE的平台(美观的前端页面),通过这个J2EE平台可以让使用者,提交各种各样的分析任务,
其中就包括一个模块,就是用户访问session分析模块;可以指定各种各样的筛选条件,比如年龄范围、职业、城市等等。。

2.J2EE平台接收到了执行统计分析任务的请求之后,会调用底层的封装了spark-submit的shell脚本(Runtime、Process),
shell脚本进而提交我们编写的Spark作业。

3.Spark作业获取使用者指定的筛选参数,然后运行复杂的作业逻辑,进行该模块的统计和分析。

4.Spark作业统计和分析的结果,会写入MySQL中,指定的表

5.最后,J2EE平台,使用者可以通过前端页面(美观),以表格、图表的形式展示和查看MySQL中存储的该统计分析任务的结果数据。


四、模块介绍
------------------------------------------
用户在电商网站上,通常会有很多的点击行为,通常都是进入首页;然后可能点击首页上的一些商品;点击首页上的一些品类;
也可能随时在搜索框里面搜索关键词;还可能将一些商品加入购物车;对购物车中的多个商品下订单;最后对订单中的多个商品进行支付。
用户的每一次操作,其实可以理解为一个action,比如点击、搜索、下单、支付
用户session,指的就是,从用户第一次进入首页,session就开始了。
然后在一定时间范围内,直到最后操作完(可能做了几十次、甚至上百次操作)。
离开网站,关闭浏览器,或者长时间没有做操作;那么session就结束了。
以上用户在网站内的访问过程,就称之为一次session。
简单理解,session就是某一天某一个时间段内,某个用户对网站从打开/进入,到做了大量操作,到最后关闭浏览器的过程。就叫做session。
session实际上就是一个电商网站中最基本的数据和大数据。
那么大数据,面向C端,也就是customer,消费者,用户端的,分析,基本是最基本的就是面向用户访问行为/用户访问session。


五、基础表数据结构设计
-------------------------------------------
1.表数据的几点说明
a.表在任何企业中,都可能是不同的。实际上,用户在网页上真正的执行某些行为时,会往服务器端发送日志。但是日志的格式绝对不是这个格式的。实际上,企业中会有专门的大数据ETL开发工程师,对原始的日志数据,开发大量的ETL,对数据进行各种转换和抽取。
然后可能会为了各种业务的需要,形成大量的各种各样的结构的表,可能已经进行了处理或者是某些聚合的操作。

b.实际上,我们做任何大数据系统/平台类的项目,首先第一步,就是要做数据调研。也就是分析平台要基于的底层的基础数据。
分析表结构,弄清楚表之间的关系。表中的数据的更新粒度,一个小时更新一次,还是一天更新一次。会不会有脏数据。每天什么时候数据能够进来。

2.user_visit_action(Hive表)
date:日期,代表这个用户点击行为是在哪一天发生的
user_id:代表这个点击行为是哪一个用户执行的
session_id :唯一标识了某个用户的一个访问session
page_id :点击了某些商品/品类,也可能是搜索了某个关键词,然后进入了某个页面,页面的id
action_time :这个点击行为发生的时间点
search_keyword :如果用户执行的是一个搜索行为,比如说在网站/app中,搜索了某个关键词,然后会跳转到商品列表页面;搜索的关键词
click_category_id :可能是在网站首页,点击了某个品类(美食、电子设备、电脑)
click_product_id :可能是在网站首页,或者是在商品列表页,点击了某个商品(比如呷哺呷哺火锅XX路店3人套餐、iphone 6s)
order_category_ids :代表了可能将某些商品加入了购物车,然后一次性对购物车中的商品下了一个订单,这就代表了某次下单的行为中,有哪些
商品品类,可能有6个商品,但是就对应了2个品类,比如有3根火腿肠(食品品类),3个电池(日用品品类)
order_product_ids :某次下单,具体对哪些商品下的订单
pay_category_ids :代表的是,对某个订单,或者某几个订单,进行了一次支付的行为,对应了哪些品类
pay_product_ids:代表的,支付行为下,对应的哪些具体的商品

3.user_info(Hive表)
user_id:其实就是每一个用户的唯一标识,通常是自增长的Long类型,BigInt类型
username:是每个用户的登录名
name:每个用户自己的昵称、或者是真实姓名
age:用户的年龄
professional:用户的职业
city:用户所在的城市

4.task(MySQL表)
task_id:表的主键
task_name:任务名称
create_time:创建时间
start_time:开始运行的时间
finish_time:结束运行的时间
task_type:任务类型,就是说,在一套大数据平台中,肯定会有各种不同类型的统计分析任务,比如说用户访问session分析任务,页面单跳转化率统计任务;所以这个字段就标识了每个任务的类型
task_status:任务状态,任务对应的就是一次Spark作业的运行,这里就标识了,Spark作业是新建,还没运行,还是正在运行,还是已经运行完毕
task_param:最最重要,用来使用JSON的格式,来封装用户提交的任务对应的特殊的筛选参数

?

六、流程分析
-----------------------------------------
[整体流程]
1.创建任务:通过J2EE平台,进入任务创建页面,填写任务参数,提交各种不同类型的spark统计分析任务

2.监控任务:用Runtime、Process等API去执行封装了spark-submit命令的linux shell脚本,开始维护任务的状态,比如提交之后就会设置task的开始时间
如果监控到spark作业结束,那么就会设置task的结束时间

3.查询任务:查询自己提交的任务列表,查看每个任务的执行状态

4.更新任务:将具体任务信息(开始,运行中,结束等)更新到MySQL表中

5.从MySQL业务表中读取结果数据,封装为对应的JSON数据格式,并返回前端页面,展示。比如柱状图、饼状图、折线图等。。。

[spark流程]
1.准备spark统计查询程序对应的jar包

2.从MySQL的task表中,读取本任务需要使用的一些筛选参数,比如年龄范围

3.执行spark-submit命令的shell脚本文件,开始YARN集群上去运行(Spark作业)

4.对Hive中的表的数据,也就是user_visit_action、user_info表进行指定的统计任务

5.将任务结果插入到mysql中

在开始学习前给大家说下什么是Flink?
1.Flink是一个针对流数据和批数据的分布式处理引擎,主要用Java代码实现。
2.Apache Flink作为Apache的顶级项目,Flink集众多优点于一身,包括快速、可靠可扩展、完全兼容Hadoop、使用简便、表现卓越。

通过以上的描述大家对Flink有了一个基本的认识,本套课程不会讲解基础内容,因此建议有Flink基础的同学进行认购。

开始学习前建议大家认真阅读下文:
随着人工智能时代的降临,数据量的爆发,在典型的大数据的业务场景下数据业务最通用的做法是:选用批处理的技术处理全量数据,采用流式计算处理实时增量数据。在绝大多数的业务场景之下,用户的业务逻辑在批处理和流处理之中往往是相同的。但是,用户用于批处理和流处理的两套计算引擎是不同的。

因此,用户通常需要写两套代码。毫无疑问,这带来了一些额外的负担和成本。阿里巴巴的商品数据处理就经常需要面对增量和全量两套不同的业务流程问题,所以阿里就在想,我们能不能有一套统一的大数据引擎技术,用户只需要根据自己的业务逻辑开发一套代码。这样在各种不同的场景下,不管是全量数据还是增量数据,亦或者实时处理,一套方案即可全部支持,这就是阿里选择Flink的背景和初衷。

随着互联网不断发展,数据量不断的增加,大数据也是快速的发展起来了。对于电商系统,拥有着庞大的数据量,对于这么庞大的数据,传统的分析已经满足不了需求。对于电商来说,大数据数据分析是很重要的,它承载着公司的战略部署,以及运营、用户体验等多方面的作用。因此企业对大数据人才的需求会持续旺盛,优秀的大数据人才年收入在50-100万。

目前经过10多年的发展大数据技术也在不断的更新和进步中,大数据计算引擎经历了几个过程,从一代的Hadoop Mapreduce、二代的基于有向无环图的TeZ,OOZIE等,到三代的基于内存计算的Spark,再到最新的第四代Flink。 早期的Hadoop开发通过搭建环境收入都可以轻松破万,到如今Flink的崛起,相信更多的先机者会看到Flink的机遇。对于Flink巨头们早已经应用的非常成熟,比如阿里、Uber、美团等互联网巨头,因此Flink使用会越来越多,这是趋势,现在很多公司都在往Flink转换,足以可见Flink技术的先进和强大。

本课程将基于真实的电商分析系统构建,通过Flink实现真正的实时分析,该系统会从无到有一步一步带大家实现,让大家在实操中快速掌握Flink技术。

课程所涵盖的知识点包括:Flink、Kafka、Flume、Sqoop、SpringMVC、Redis、HDFS、Mapreduce、Hbase、Hive、SpringBoot、SpringCloud等等

分析指标包含:频道分析、产品分析、用户分析、活动效果分析、营销分析、购物车分析、订单分析等

课程所用到的
开发环境为:Window7
开发工具为:IDEA
开发版本为:Flink1.6.1、Hadoop2.6.0、Hbase1.0.0、Hive1.1.0

学完该课程大家会对Flink有非常深入的了解,同时可以体会到Flink的强大之处,以及可以结合自己公司的业务进行使用,减少自己研究和学习Flink的时间。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读