00:00
呃,我们当时呢,给大家说说我们现在啊,如果要是想完成咱们项目的话,大概有这么几个需求对吧?什么日活呀,首单呢,什么交易额分摊呢,对吧,还有一些咱们这个什么ADS层的处理,对吧?那么这块呢,那我们现在这个日活的,我们要作为我们第一个功能去实现一下,对吧?那么如果要是日活的话,那其实就是当天对吧,我们这个这个比如说今天啊,那登录到我们的网站对吧,他的一个用户呗,对吧,而且注意同学们,比如说我现在呢,我统计咱们班上课的日活。我要统计,咱们上课的时候,你觉得怎么统计,是不是应该是你们来的时候我记录一下就OK了呀,对吧?你们每节课出去上厕所回来我还记录吗?这是不是就不应该记录了呀,对吧?所以说咱们的日活本身在统计的时候,是不是应该就是把当天啊,第一次访问咱们网站的对吧?这如果用第一次访问咱们给记录一下,然后到时候做一个统计下,对吧,那么最终呢,它的一个实验效果对吧?那应该是这样的,比如说这是今天,然后呢,一共是24小时对吧,那么在零点的时候访问我们这个网站,它的用户大概有多少对吧?一点的时候都要访问用户有多少,就每一个小时访问我这网站用户都有多少对吧,形成一个这样的一个这个图对吧,形成一个这样的图,那么这个图的展示呢,其实对吧,咱们可以利用我们这个班对吧来做对吧,利用可班来做对吧,那么具体你要想实现的话呢,那么这里我们除了几班的之外,那还得需要什么呢?还得需要一个叫elect search啊elect search对吧,那么具体咱们现在大概的实现思路什么样的呢?咱们先把整体实现思路啊给他看一看,首先呢,同学们,那我现在这个东西是不是已经到卡不卡了呀,那么你要想统计日活的话,这个东西这个数据是不是源源不断的过来的,不像咱们。
01:40
这东和你们离线有区别,同学们对吧,我现在离线也是把这个数据先给它收集起来,你们原来离线数据数据都放哪了,是放到HDS里边了,对吧?放到HD之后你的数据还变吗?不变了,都是固定的冷数据,对吧?但是呢,我们现在放的卡卡的数据,注意它呢是源源不断的过了也就意味着什么,我现在真正啊再去我们这个生产这个环境中,这几个程序,它应该是一直运行着的吧。
02:08
就这个数据他肯定是源源不断的过来,前端买点肯定不断的采集用户的行为数据,然后呢,给你发送指定的端口,然后咱们ND呢,不断的接收,然后把这数据分别发送到202 203还204,我们这个处理这个服务器上,然后接下来咱们202 203 204,他们接收到数据之后,是不是不停的要往咱们的卡卡的主题里边发呀,也就是说你当前咱们的卡卡主题它的数据呢,在源源不断的变化。这个是和你们原来离线不一样的地方,对吧?那么既然它的数据是源源不断的变化的,那么这个时候我要对数据进行处理,咱再选型吧,谁来进行处理啊,由谁来进行处理,Spark streaming。的实时数据,咱们现在对吧,我们听过的框架有什么SPA streaming,对吧,有什么STEM,有什么flink,那我们现在我们真正能做的是不是就SPA streaming啊,对吧?那么也就是说如果想做日活第一件事,咱们应该用SPA追命程序,从卡夫卡的这个主题里边,然后呢,把他们启动日志给它起出来。
03:10
因为日活是不是只是看咱们当天用户第一次登录对吧,这种情况对我只需要咱们的启动日志就可以了。对吧,然后接下来那么取完之后呢,那么这个时候你怎么判断咱们当前的用户是第一次登录呢。你们觉得怎么判断?来,那么这块呢,我稍微给大家简单再画一画RC。这活吧。那么这块呢,是咱们当前这块的处理对吧,当前这样的处理,那么处理完之后呢,那么咱们现在要要统计日活,那么统计日活的话呢,那我肯定要从咱这里来拿数据,对吧?那么谁来拿呢?那应该是我们SPA streaming。
04:12
啊SPA命他呢,应该从我们这卡卡里边来拿数据,对吧?但是拿数据之后呢,大家想想,那么当前因为是启动日志嘛,有可能一个用户啊,这一天启动了多次对吧?没事的时候去打开头条看一看,没事的时候呢,对吧,就打开咱们这个微信上去看一看,对吧,那你不能把每一次都给我记录一来,对吧,那么咱们现在值保留第一次,那这个时候怎么来做。怎么判断第一次呢?记录一下是吧,哎,我觉得这个记录可以是怎么记录呢。打个标识对吧?哎,那也就是说我现在啊,你这数据源源不断的过来对吧?那么源源不断过来之后呢,那么大家想一想,我当时取的数据长什么样啊,我这个数据是不是长成这样对吧?这这这个是不是你当年这这某一个用户,然后在什么时间,然后通过什么样的一个设备,对吧?然后呢,在什么地方,然后访问了我当前的网站,我是不是已经把这个记录一下了,对吧?那么我现在呢,记住之后,那么这个东西怎么样来确定它是我们现在这个首次,对这是首次呢。
05:25
这里不有子弹吗?来看一看,咱们这里有。感觉这东西不太对呢,我觉得。啊。因为你看我现在在咱们这里边应该把那个谁啊,是不是应该把咱们现在start的日志过去打过来呀。对吧,啊这这这个是吧,这卡里面是不是应该是start的对吧?来看start这个这个卡卡对吧,这里面是不是有start对吧,对吧,那咱现在呢,可以把拿到了啊,就卡卡里数据全是我们现在启动日志了,对吧?然后进来,那咱现在呢,这些启动日志对吧?拿到之后呢,那我怎么知道诶当前也是今天第一次访问。
06:13
时间说最小的对吧,那你得找个东西把它记一下呀,时间说最小的对吧,如果说你们这个数据是固定的,那行。找地方存一下呗,其实你看我现在啊,假如说我在这里对吧,我就从咱们这个就就就这吧,就这咱们卡不卡对吧,这个呢是我们这个卡不卡对吧?然后这里边呢,有张三对吧,这登录一次对吧,这个呢,比如说说这代表时间了啊这个张三啊又登陆一次,这个张三呢,把又登陆一次,把这个张三呢又登陆一次对吧?哎,那么你现在是不是也源源不断的把这个张三的一个登录数据给他获获取到对吧?那么有可能第一个采集周期你获取的这两个对吧?那么你现在是不是可以知道,哎,他俩我都拿到了,那你可以取时间最小的对吧,然后接下来,那么咱们现在呢,那么再往下拿的话,同学们,那你想一想,我还在一个采采集周期里边吗?我下一次再拿的时候,这个张三,我拿的三个四,你比较时间,最小的把三拿出来了。
07:16
他是首次吗?他不是状态对吧,也就是说咱们现在要保保留他的状态对不对?保留状态怎么保留,你们接触过咱们这个可以保留状态的算子吗?可以保留状态的算子,你们接触过吗?有一个叫什么update by k对不对,怎么样,那个算子还OK吗,你们。那里边都放些什么东西?我相信咱们班现在应该有一小半的同学对咱们算的这两参数都还弄不明白。对,每次在在记录的时候,Update是在传两个参数,第一个是什么。当前采集周期里边它要处理的值,那么第二个参数是什么?是不是就在的状态啊,对吧?这种方式行不行?可以,但是after make,它把这状态存在哪了,内存。
08:11
状态存存在检查点了,同学们。对吧,他们状态存在检查点了,那么如果检压点的话,它是不是有一个小文件的问题啊,对吧,那么所以说呢,这种方式不是最好的,不是最好的。那如果这种方式不好,那你们还有别的方式吗?保留状态。完了保存买circleq对不对?哎,买circleq嘛,咱们现在张三第一次登录,那我记录一下张三在什么时间登录一次,对,然后等张三第二次再登录的时候,那么咱现在呢,这里我其实我没必要记录了,我是不是只记录一下咱们张三登录过就OK了,对不对?我比如说我现在在处理咱们这个第二条数据的时候,那我到买色会里面一查,发现什么呢?发现张三的数据已经有了证明什么证明张三曾经来过,这能理解吗?同学们对吧?那但是这也有问题啊,你们对my circleq就这么自信的嘛,对不对,如果说我现在要是数据量少,没有这么大压力的话,My circleql处理也没问题。
09:10
对吧,但是我现在如果说大量日志的话,每次咱们现在不停的对MYSO数据库来进行我的差询操作,想一想买so压力是不是比较大呀,那么再选red是吧,所以说呢,咱们red出来了对吧?那么如果是red的话,那么咱们现在是不是可以这样张三来了对吧?那么咱们现在呢,可以把咱们张三他的一个登录状态来放到我们现在这里边来。都放到RA里边来,对吧?放RA来,那么接下来我问大家RA咱们常用的数据类型都有哪些呀?哪几种?一共五种是吧?有什么咱们string,有什么咱们list,有什么side,有什么哈希,有什么z said,哪种合适呢?哪种合适呢?
10:00
赛行不行可以吧,短赛是不是可以啊,这个别的呢。哈希行吗?擦鞋怎么擦七行不行?啊对呀,那都是都是张三嘛,对吧,比如说我都是张三对吧?啊对,有可能李四和张三一样,是不是它的K是不是就一样了,对吧,K一下,但是这个东西应该也还好吧,啊比如说我现在在咱们里边再再再加一层对吧,再加一层的ID对吧,再加一层ID。我是不是也可以区分呀,对,哈希,你想我通过ID的话,就算你放在你你算出一样,你你们你们担心一样,是不是担心说老师我现在这个东西它K一样,我是不是要放在一起,放在一个槽点,那没关系啊,放在一个槽点,那张三李四放在一个槽点,那那有什么有什么有有什么不行的呢?对吧,你只要能把张和李四区分开,证明张三和李四曾经来过是不是就行了,对吧,哈西也行,还有别的吗?Z赛,那你想赛可以Z赛再加个排名,那应该也差不多,还有别的吗?
11:18
还有别的吗?例子行不行?例子行不行?啊,例子行不行,为什么不行,你别给我考虑快慢啊,老师现在说行不行,然后你再我说快慢行不行可以吧,为什么意思,例子里面是不是有exce是不是对吧,所以说我觉得也可以。还有别的吗?普通的咱们KV行不行。啊也行是吧,那那你们选吧,都行,五种类型都行,哪个哪个更好一点,对,所以说到时候咱们可以从这里面选一个最优的啊选一个最优的对,就是我现在呢,要利用我们red来记录呢,咱们这个对吧,这个日活对吧,记录日活那么用哪一个呢?对吧?那么red数据库还有什么F,那咱肯定选这个red了,对吧,那么如果red的话,那么到时候咱们选择什么类型,对吧,到时候咱们在做的时候,实际呢,再看对吧,选一个最合适的对吧,选一个最合适的对吧。
12:21
呃,然后接下来,那么你现在呢,把这个东西啊,已经放到ready去了,那如果放到ready去的话,那么这个时候咱们其实就可以这样了,同学们对吧?那么当我现在呢,对每一个我这个用户过来,我是不是可以从我们这个red来把当前用户的状态给打出来,来判断是不是首次登录啊,对吧,是不是我们现在首次登录,那么接下来,那么如果说你判断完了,那么这个时候咱们要干什么呢?你是不是得把咱们用户他的一个日活对吧,是不是得保存起来对吧?那保存起来之后呢,那咱往哪保存,那么这会儿那其实又要处理了。啊,这个又要处理了,那么咱们刚才在判断我这个用户是不是首次登录的时候,其实呢,也可以把它理解成咱们做了一次ETF。
13:01
听过一天了吗?是不是相当于做了一次清洗啊,对吧,因为你想我把不是咱们首次登录的是不是已经给它干掉了呀,对吧?那么如果说啊,你清洗完毕之后,这个数据呢,它的量比较少了,对吧?咱们可一般都做完聚合操作,或者清洗完之后,虽完这个数据量比较少了,那么这个时候你可以把这数据直接保存哪呢?假如买circleq呀,或者说咱们内存里边,对吧?那么如果说你清洗完毕之后,那么这个东西呢,它的数据量还比较大,那么这个时候呢,你往my circleql里边和ready放就不太合适啊,那你想一想同学们,咱们现在是个电商网站,然后呢,我这个用户呢,想记录他的一个首次访问,你说清洗完之后它的量大还是小?应该还是比较大的吧,对吧,你比如说我现在当前我的这个电商网站对吧,每天呢,我这应这个日活量可能是上千万对吧,上千万对吧?那么我这里是不是还有上千万条数据呀,对吧?那你把它放到my soq里边其实也不太合适,那怎么办呢?那么咱们可以把它放到其他的o lap,我们现在这个分析系统里边去,对吧?那么我这里用的是谁呢?我们这里用的是elect search,那么除了elect search之外呢?那么其实呢,我在这里还给大家介绍我们的clean house对吧,介绍house啊,我们现在在日活的功能这里边呢,我们是用的是我们的search,然后呢,在咱们it search里边来对数据做一些我们的分析,然后通过K班呢来进行展示,这是最后一个了,对吧,从我们这里边他进是数据了,你数据已经保存到S里面去了,对吧,然后接下来那这个时候呢,我可以通过K班呢来进行展示,你可以直接通过K班的展示,也可以什么呢?也可以发布成数据接口来进行展示。
14:37
对吧,那你们觉得这个search它应该是个什么东西。哎,数据库对吧?你看咱们现在在这里,如果你要把这个东西有个保存的话,这search是不是应该就是相当于这个数据库啊,对吧,相当于数据库对吧?其实除了数据库这个功能之外,它还有一个对吧,叫什么呢?叫搜索引擎啊,叫搜索引擎对吧?这个搜索引擎咱们应该也不陌生,对吧,百度是不是对吧,百度比谷歌呀,什么这样搜索引擎,那么它和咱们的百度或者说和咱们谷歌有什么关系呢?这个呢,咱们下午再说啊,下午再说好了,那么咱们。
我来说两句