00:00
好,接下来我们就要真正给大家开始项目这一部分内容了啊,那大家看一下,首先看一下我们这个PPT的标题啊,我们要做的这个项目是什么呢?是一个。基于flink的电商用户行为数据分析这样的一个项目,大家提取一下关键字吧,这个关键字首先我们知道了这个项目是啊,首先啊基于flink,那我们刚学完flink嘛,那当然就是要用flink来做一个项目,然后还有什么电商,对我们这个项目的背景,电商啊,基于电商的这个行业来行业背景来做一个分析,然后我们要做什么样的数据分析呢?对用户的行为数据,针对他的行为数据做一个分析,哎,所以这里就是其实已经明确了我们要用的这个,呃,数据分析的工具,Flink行业背景是电商,然后具体的数据是用户行为,好接下来就给大家看一下,首先我们还是看一下主要讲哪些东西啊,就是一个目录。
01:06
呃,首先呢,我们还是回顾一下批处理跟刘树理啊,就是大家还是回忆一下啊,到底是什么样的一些特点,然后呢,我们再说一下这个电商用户行为分析这么概念,到底是分析什么东西,我们用什么数据,从里边能分析出哪些东西来啊,这个大家要有一个明确的思路,然后接下来就给大家具体的说,诶,我们可能用到的这个数据源是什么样的啊,然后我们基于它去做一些项目的拈划分啊,然后我们最后呢,是给大家以第一个拈啊,就是所谓的这个,呃,实时的一个热门商品的统计来做一个例子,给大家讲,详细的讲解一下整个逻辑里边怎么去设计,当然后面的一些拈我们也会列出来,简单的说一下实现思路是什么样的啊,这就是我们这节课的主要内容。然后首先先回忆一下批处理和流处理啊啊,那这一部分大家其实也已经都很了解了,批处理跟刘处理其实是代表了现在。
02:11
大数据处理领域两种完全不同的处数据处理方式,对吧?啊,我们说这个它几乎就是两种不同的世界观啊,那当然这里边列出来的这就是这两种不同的世界观下代表作对吧?呃,那大家看左边这个哈杜普Spark,这就是批处理的代表作了啊,当然现在这个Spark可以认为是批处理的一个巅峰之作,对吧?呃,基本上就是已经是非常成熟,而且这个整个社区应用也非常广泛,非常的呃,非常的多啊,应用场景非常的多了,然后右边这边呢,呃,就是流处理,流处理的话大家知道先锋就是storm对不对?呃,但是其实是有很多问题的。这个当时也给大家提到过STEM,它其实是第一次在真正意义上,呃,就是实现,就是一个所谓的真正的零处理,就真真实实对不对,就真的是来一个数据处理一个,但是它随之带来的一个问题就是说对吞吐量不够,对吧,大数据应用场景下吞吐量不够,另外还有一个问题就是。
03:21
哎,我们的那个状态一致性对吧?呃,如果数据出现乱序的话,他也处理不了,所以这些问题其实都处理的不是很好,那当然了,就是说整个Spark这个P处理的框架呢,基于这个Spark又发展出了一个VP处理的一个所谓的伪实时的流处理,对不对啊这样的一个思路,那么它的VP其实这个思路呢,本质还是批处理,对,它其实跟流处理差别还是。从这个框架上来讲,还是还是有很大的差别的,尽管我们一般认为SPA stream也是实时算是做这个实时分析的这个工具了,但是本质上还是不一样,那flink呢,其实就是真正从意义根本意义上它是跟storm这是真正的这个零处理这一派的。
04:12
弗link可以说是现在流处里的一个,至少是目前的一个一个高峰,或者说一个代表作,对吧?啊,所以大家看现在就是这两派还是齐头并进啊,各有各的发展,各有各的好处,那么两边的这个社区呢?啊,也是都在蓬勃发展,而且这个也是争议不断,就是互相在争的东西,就是说谁会未来统一,一统天下啊,所以我们现在其实并不要关心这么多东西,我们只要把这些。具有代表性的,他们的思想了解清楚,然后如果他们有很好的应用的话,我们把对应的应用场景把它用起来就可以了,对吧?啊,所以这是我们现在要做的这个事情。好,然后我们具体再回忆一下批处理和流处理啊,他们具体到底是哪些特点呢?啊,首先批处理的话,最大的特点就是啊,就是攒一批一起处理对不对,所以它处理的主要是操作大容量的静态的数据集,对吧,然后一批计算完成结束之后返回一个结果,所以它的特征主要有哪些呢?这里边列出来的啊三个主要特征,首先。
05:26
它处理的数据是一个有界的数据,对吧,是一个有限级,另外。一般情况下,它处理的数据是不是都可以存储在持久的存储位置里边啊,对吧?啊,大家知道这个呃,在做处理的过程当中,因为你如果要是说这个数据量特别大的话,本身内存里边也放不下,对不对啊,对吧,就总是要有这样的一个落盘操作的啊,最后还有一个特点就是大量,假如说我们的应用场景是。就是特别特别海量的数据,对吧?啊,就是这个几几千个T,呃,这个上万个T啊,这种级别的数据,那大家想在这种极端的场景下,别的东西还好使吗。
06:11
那就真的不好使了,你想实施那么大的数据量怎么实施对吧,你要你要多大的一个集群才能才能把它那个同时处理的完,所以在这种情况下可能就只有去用批处理了啊,所以批处理是处理极为海量数据集的一个唯一方法啊,这是批处理的特点。另外这个流处理大家对应的也来看一下,那流处理主要是什么呢?就是来一个处理一个,对不对,随时进入数系统的数据直接就可以进行计算,所以它其实是没有必要无需对整个数据集进行操作,而是系统传输的时候来一个数据就去处理一个,所以它可以处理。无界的数据啊,可以处理这个有头没尾的连续不断的数据啊,这产生了几个重要影响啊,就是首先它可以处理几乎无限的数据,但是同一时间内只能处理一条数据,对吧?啊,这就是说单单一到我们一个slot,一个任务一个slot里边,那它同时就是只能处理一条数据,那不同的记录之间,不同的数据之间。
07:21
他只需要去维持最少量的状态,不用把所有的数据都存下来,对不对,哎,这是这个流处理的一个特点,另外就是他的这个工作的过程呢,是基于事件的。哎,这里边大家要再去回过头来再想一下的话,就会发现基于事件,事件驱动的这个特特性,其实还是真的是跟我们习惯的这种方式是不太一样的,在编程的过程当中,大家也发现了,比方说像这个on timer,对吧,这是不是就是典型的一个一个事件触发,那就是在未来的某个时间,我当前把它定义出来,并不是马上就执行,马上就调用,而是在未来的某个时间再回调,调回来去处理这个事情,好呃,然后接下来我们给大家前面是在复习这个批处理跟流处理的这个这些基本的概念啊,然后接下来我们说一说现在要做的这个项目,主要是电商的用户行为分析,那大家就要首先来想了,在这种场景下。
08:25
大家会想到,首先我们是哪些需求要用这个flink来实现呢?大家会想到,那肯定应该是实时性要求比较高的一些需求,对不对,因为flink的特点,留出你的特点,不就是来一个处理一个低延迟嘛,对吧?呃,然后当然了,它同时这个高吞吐,那Spark也可以高吞吐量嘛,呃,另外就是呃,另外还有一些就是如果在这个处理逻辑上对状态的一致性要求,正确性要求比较高的场合,是不是flink直接去用的话,也是比较合适的一个一个应用场景啊,对吧,这是大家直接能够想到的,那具体来说,我们到底在哪些地方用呢?
09:13
哎,这里我们就首先要来分析一下,我们到底用遇到的数据是什么,我们到底面对的问题是什么,对吧?用户行为分析,我们到底想分析什么行为呢?到底能分析出个啥来呢?诶这里边大家首先看一下在一个电商平台里边主要有哪些这个参与参与的对象呢。其实电商平台里边啊,除了平台本身之外,参与的对象是不是主要就是两类的,一个就是用户对吧,另外一个就是商品,那么用户本身啊,当然了大家会想到在在电商领域应该还有商户对不对啊,商户这里边我们可能本身电商平台并不关心他的一些消息,因为它它的信息是不是都放在跟商品绑定在里边了,对吧,都放在这个商品里边去去关注了,那当然这里边就是大家会想到我们现在要关注的主要对象是。
10:14
用户,我们要分析他的行为对不对,那大家想一想,在这个平台上边用户的行为有哪些呢?用户的行为其实是多种多样的。有一些行为,其实大家发现是其实就是用户自己的行为,就他跟别的东西好像没什么关系,对吧,比方说他平常的一个登录方式啊,他是习惯用这个,呃手机登录呢,还是喜欢用这个,呃浏览器登录呢,对吧?呃还他他喜欢用什么样的浏览器呢?对吧?呃他平常另外就是他上线的这个时间点和时长,另外还有就是在IP是哪里的,IP地点是在哪里呢?这些是不是都是用户本身的一个数据啊。
11:01
呃,另外还有就是它的在一个页面里边一般是停留多长时间,还有就是他跳转的这个习惯是什么样的,这是不是都是用户本身的一些行为习惯,哎,这是我们能够收集到的一大类数据。除了用户自己本身的一些行为数据之外,还有什么样的行为数据呢?还有另外一大类,其实就是用户跟商品之间交互,他们之间有关联的一些数据了,就是它对针对商品做的一些操作,对不对?哎,那这里边比方说有什么诶,他可以点击一个商品,可以浏览一个商品对吧?啊,然后接下来可以去购买一个商品,可以呃支付这个商品,这都是他的一些行为,另外还有一些行为啊,它可以收藏对吧,添加添加到收藏,添加加入购物车啊,然后可以这个喜欢这个商品,可以给他打分儿,可以给他评价打标签啊所有的这些其实都是用户的行为。
12:04
那从这些行为里边,我们又能分析出什么东西来呢?诶对,大家其实直观一看的话,这里边有一些数据其实是能代表什么啊。其实是能代表用户对商品的一个偏好的,对不对啊,所以像这个收藏喜欢评分评价啊,甚至点击浏览,是不是某种意义上也可以认为是代表了他的一些喜欢啊,你你不喜欢不会去看对不对?呃,所以就是这些东西其实都可以结合起来。表现出用户对商品的一个偏好。那么有了这个偏好的程度,我们可以分析什么呢?啊,当然了,这些东西就是有了这个偏好程度,就可以给他做对应的推荐了,对不对,也就相当于,哎,知道你喜欢什么东西的话,那我是不是就可以把喜欢的东西都推荐给你啊,所以这一部分如果要是延伸开来的话,这其实就是相相当于呃,跟这个推荐系统相关了,对吧?啊,他可以给大家基于这些数据去分析,然后做一个推荐系统出来啊,这是一部分应用,另外我们还可以做什么呢?
13:22
另外大家会发现,除了用户表达对这个商品的一些喜欢偏好的这种数据,另外还有一些数据,其实这是一些关键,这是一些常规的。常规的这个业务流程数据对不对,常规的业务流程数据是不是很多东西在我们这个商业上都是重要的一些统计指标,比方说一个商品有多少人点,有多少人看,对吧,有多少人买,有多少人加入购物车,这些是不是都是重要的一些商商业指标,哎,所以我们可以把这些指标是不是做一个统计收集起来。
14:06
哎,所以在这里边可以做一些商业指标的统计分析,这又是另外一大块儿应用。大家再想一想,还可以做什么呢?用比方说像这个用户他自己的这些行为习惯又能做什么呢?哦,大家会想到这个东西,用户自己的一些行为习惯,是不是可以针对这些分析他的一些特点啊,啊,这就是所谓的去做一些用户画像对不对,当然了,广义做用户画像是不是也可以把他的那些,比方说你喜欢什么东西,那些偏好收集起来,也可以做用户画像啊,对吧?那比方说这个,呃,这这个大家可能也知道,就是说你一个用户如果要经常这个上线时间,时间点都是这个夜里边的话,那我可能给你画像,给你贴一个标签,就是夜猫子对吧?啊对你你如果要是说经常出现什么情况呢?就是经常呃这个周期性的,隔一段时间就突然一下子买好多好多东西,对吧,而且是有可能都是用不着有可能重复性的那种东西啊,一下子买好多花好多钱,那有可能哎,你这种人钱好赚对吧,啊贴一个标签叫剁手党对吧,这。
15:18
也是有可能的啊对,所以这个就是大家可能发现有这样的一个应用,就是做这个,呃,这个用户画像,那接下来可能做的一些事情呢,也可以去给他推荐一些东西,对不对,也可以做这个推荐系统,也可以做一些其他的一些营销策略的一些一些扩展啊,这是这这一部分内容啊,那还有一些可以做,还可以做什么事情呢。这些数据里边有一些业务流程相关的数据,比方说购买支付啊,还有就是用户的登录,其实这些行为它的安全性其实是需要得到保证的。就是有一些特定的这个业务流程,我们可能会特别关注一些,对吧,那么在这些过程当中是不是有一些异常的行为,我们可以去检测,然后去做一些风险的报警啊,所以我们我们可以从这里面去做一些风控的一些管理,对不对啊,所以大家看从这个用户的不同的这个行为数据里边,我们其实可以做不同的分析,得出不同的这个,呃,提炼的要做的一些指标,对吧?那具体来说的话,这里边可以给大家分成三大类吧,呃,简单来讲分成三大类啊,一类就是统计分析。
16:37
统计这一部分的话,那大家会想到一般情况用到的主要主要这个数据来源是什么呢。主要数据来源是不是就应该是点击啊,浏览啊,啊或者说购买啊,对吧?啊支付啊,类似的所有的这些我们收集起来的这些指标,那这些数据应该从哪里来呢?啊从卡夫卡来,那本身这个卡夫卡的数据又从哪儿出来的呢?源我我们说源最源头对吧?对最源头是不是还是得到日志里边去啊,那大家会想到这个日志,我们要的这个日志是什么日志呢?关键是行诶行为日志,所以具体实现一般是怎么样去实现的,是不是在业务代码里边,比方说我们在后台或者在前台啊,有些时候是在前台去做买点啊对,所以比方说诶我们后台或者说你像这个点击行为,有时候是直接在前台买点的啊,因为你那个页面上做一次click操作,是不是前台页面就可以收集到这个行为,对吧,在他的那个on click方法里边,我直接就把它这个。
17:46
日志就写一个买点日志写进去,所以根据这些日志,我拿到这个实时的日志,是不是接下来就可以去做这个实时的统计分析了啊,所以一般情况我们这些数据来源都是来自于买点日志,那当然了还有另外的呃一个来源,比方说我们还可以分析什么呢?那假如说有一些数据,这个买点日志里面就没有呢,买点日志我们买的点很少呢。
18:14
我们还可以直接去拿服务器的那个日志。就是因为大家想到服务器的日志里边,它会保它会有一些什么信息啊。他是不是我们的web server嘛,它是不是会有所有浏览器,所有客户端发来的请求的那个信息啊,对吧?啊,一个客户端一个浏览器啊,它基于哪一个IP,然后一个用户发来了一个get请求,请求了哪个页面,诶那我们这个数据是能够达到的,那基于这个是不是我们也可以做一些简单的流量统计啊呃,就是如果没别的好的那个买点日志的话,当然有的话我们就直接用买点日志了,没有的话用这个也可以做一些分析好所以。
19:00
那大家看基于这些我们可以做什么分析呢?可以做热门分析,大家想热门是什么概念,就是对那top n对吧,相当于我得去统计之前,比方说是我们是电商背景吧,那我们就是热门商品,那我应该是统计所有商品里边哪些商品的点击量最高对吧?或者浏览量最高,然后我给它来一个排序,Top n拿出来,这是不是就是一个热门商品啊?那所有这个全量数据的分析一般比较少,我们一般用的是什么呢?一般是不是应该是近期热门商品的一个分析啊,对吧?啊,一般我们不需要去做那个所有商品历史统计啊,当然想要做历史统计也可以,另外还有这个分类的热门商品,那就是按照类别来区分,另外还有流量统计啊,这就又涉及到你也可以做这个,比方说流量,我我这个比方说一个网站里边有不同的这个这个站点的模块,对吧,我可以去去区分这个,呃,不同的站点的流量,另外也可以做什么呢?呃,而且这个就还可以去做这个热门的分类了,对吧,比方说热门站点的这个统计,热门网页连接链接的这个统计,这个也可以做,另外大家更熟悉的指标就是PVUV就可以做了,对吧?啊流量统计相关的这些东西,好,这是统计分析这一大块,其实大家会发现我们所说的平常所说的这个,呃,就是行为分析的这些指标一般都是什么呀。
20:36
是不是一般都是这一类,都是统计分析这一类的东西啊,啊,所以正常情况来看的话啊,我们正常一般情况都是用CQ把它筛出来,对吧,最多再去做一个排序,或者说也不用排,直接把那个数量统计出来就完事了,一般就是做这个操作其实还是比较简单的啊,所以大家其实把一个例子搞清楚,应该能够举一反三,把其他的指标都能够自己做出来啊。
21:04
另外比较特殊一点的就是所谓这个偏好统计,这个偏好统计这里边我们是把这个收藏啊,喜欢评分打标签这些数据用来表达它的偏好了,对吧,那这里边其实还没有说的一点就是。用户本身的一些行为习惯,是不是也可以作为他的某种偏好,某种特质啊,对吧,也都可以结合起来用啊,所以这些结合起来就可以做这个用户画像推荐列表了啊,这里边可能要结合一些特征工程啊,机器学习算法啊,对吧,这些东西可能就会涉及到更多算法的内容,最后还有一类是风控,风险控制。那它主要就是针对我们在这个应用当中,可能比较重要对安全性考虑比较多的这些场景,比方说下订单登录对吧,或者说支付这些场景可能就有一些风险控制的需求,呃具体来讲,比方说什么呢?啊,那有些地方可能就是像这个刷单对吧,你假如说这个诶疯狂的去刷单,这种行为是不是我们需要检测出来做一个报警啊,啊,甚至可能要把它加加入黑名单什么的,另外还有什么呃,订单失效的一个监控,可能这个也是需要去做一个监控的,还有大家比较容易想到的就是说这个恶意登录,就是短时间之内。
22:24
大量的那个登陆失败,那大家想这有可能是什么情况出现了,对,有可能出现黑客攻击了,对吧,这个账号可能在被攻击啊,所以在这种情况下,我们肯定是要去及时的检测出来,然后把它去做一个处理的,哎,大家想一想所有的这些需求里边。我们哪些是很有必要用flink来做呢?啊,大家会想到实时性要求高的对不对?诶哪些对实时性要求高呢?对,大家想到你这个流量统计,或者说如果你这个热门商品,如果要是想要实时的去更新的话,实时那个更新频率高的话,是不是也得,呃,实时性要求高一点也得用flink啊对吧?另外大家还想到什么,对风控这块是不是要求会更高啊,实施的要求更高对不对,这个就是你一旦出现问题是不是马上应该报警啊,所以这块要求是会更高一些啊那大家可能会想到推荐这一块的话,你也得去实也有实时推荐呀,对吧?呃,这个这个东西是不是也很重要呢?啊,但是大家就会想到这个实时要求是不是就没有那么高啊?哎,你比方说给用户做一个实时推荐,那用户其实他并不是说我对你。
23:43
当前推什么,我马上就去看,马上就去点,对吧,我这会儿在看的时候,有可能我根本都顾及不到别的地方,那可能是比方说我都把这个这一单都下了,都支付买完了,有可能哎之后对吧,我再去看看其他的这个时候你隔个几秒钟,甚至你隔个几分钟再给我推出来,其实都没什么问题,对吧?啊,从这个业务流程上来讲都没什么问题,所以这里大家看到就是我们可能在这个项目里边这个推荐这一部分,但当然了,如果要讲推荐的话,这又是很大的一个项目,对不对啊,所以这里边用户画像和推荐这一部分,我们就不在这个项目里边涉及了,我们主要就是做对统计分析和风控这两部分内容。
24:29
好,那主要来讲我们的模块怎么去设计呢?就是两大类,一个就是实时的统计分析啊,那当然就是说不太实时的那些我们就不管了,对不对啊,不实时的需求我们就做批处理就好了,另外一大块儿就是风控,对吧,或者还涉及到业务流程的一些控制。都放到这一类里边,具体我们这一个项目里边要实现的拈给大家列出来有哪些呢?首先我们做一个实时的热门商品统计啊,这个就是不光要统计出这个热门商品,而且要实时更新,对不对啊对吧,是这样的一个状态,另外还有就是实时的热门页面流量统计。
25:11
啊,那那这个就是热门的页面,那相当于这个是不是大家看跟上面这个需求很类似啊,啊相当于也是一个top对吧?啊,只不过就是说那个商品要变成页面而已。然后接下来。大家会想到有这个访问流量的统计,对不对啊,PVUV这些东西就要出来了,然后接下来还有这个APP市场推广的一些统计啊,另外就是还有这个页面的广告点击量统计,大家想这个我们我们之前说过这个你要是做这个广告点击量统计的话,是不是应该是实时的处理,实时统计出来去调整那个报价啊,对吧?啊,这个其实是实时性。更高一些会比较好啊,这是这一部分内容,那么关于这个业务流程和风险控制呢,可能涉及到这里面我们没有做那个刷单啊,就是我们是做了一个什么呢?这个有点类似于刷单,就是说页面广告是不是也有可能有人会疯狂的去点啊,刷这个点击量对不对,所以这里边我们要做一个页面广告的黑名单过滤,防止他去刷单。
26:15
然后接下来还有就是要检测恶意登录的行为,如果出现的话要报警,对吧,最后还有一个订单支付失效的一个监控啊,当然了,其实我们在那个业务流程里边,还有一个就是要做一个实时对账分析的一个一个模块啊,这个可以认为是也是业务流程相关的,对吧,我们都放在这个订单这一部分给大家一起讲。啊,大家可以看一下大概的一个划分就是这样,呃,整体来讲可能是五大拈吧,那具体里边要实现的指标可能细分就就还比较多了,对吧?比方说这个流量统计里边,可能我们热门页面做一次统计,然后这个PVUV在做,对吧?呃,然后这个市场营销指标里边呢,可能APP的那个市场推广啊,推广量不同的渠道推广了多少,这个做一个统计啊,这里可能还分那个就是总的推广量,还有那个分渠道的推广量,对吧?具体可能还有不同的实现,然后这里边就是还有这个页面的一些广告分析,还有黑名单的过滤,对不对?呃,然后恶意登录做一个,然后还有订单支付,这里我们检测检测一下,超时的时候要让它失效。
27:26
另外呢,就是我们可能还跟另外一条人做一个实时的对照啊,这就是我们要做的一些模块啊,大家可以看到这个要实现的需求,其实涵盖的点还比较多,对吧?啊,基本上就是很多点都涉及到了,所以接下来呢,我们就会给大家把这些东西到底怎么实现去做一个讲解。
我来说两句