00:00
哎,我们已经知道这个项目到底是怎么样的一个需求,也知道该怎么做了,那接下来就是实际上手把这个项目搭建起来了,那当然我们还是要搭建一个main项目,我们用skyla去写一个ma项目,所以首先打开idea,然后我们去新建一个project,好,那当然这里边我们还是加上当前的这个group ID com.at硅谷,然后artifact ID,当前我们叫用户行为分析嘛,啊,我就叫user behavior analysis,好把它创建出来,然后接下来首先大家想到进去之后应该就是考虑依赖了,对吧?呃,现在我们先不要着急,我们先想一下,当前这是一个真实的,呃,真实应用场景下的这样一个项目啊,那我们其实在做这个项目构建的时候呢,你得考虑我们项目里边的层级结构,整个大的这个范畴,我们管它叫user behavior analysis,对吧,用户行为。
01:00
分析,但是里边其实我们分了好多小模块啊,对吧,我们分了五大模块,然后呃,九个不同的小需求,所以这里边其实我们在里边应该是构建一个父子项目对吧?啊,在当前的这个大的project下边再去创建下下游的这些,这些啊就叫我我们叫拈,叫modu对吧?哎,所以接下来我们应该先创建对应的这个子拈,当前我们第一个拈,那就是实时热门商品统计分析了,对吧?那这里边我们就叫hot items,就是热门商品,然后analysis,这也是一个统计分析啊,我直接加上这个后缀,这就表示到底是风控类的指标,监控类的指标,还是统计分析类的指标,好我先把它创建出来,大家看这创建出来之后,负项目这边的这个POM文件里边,这里它的package变成了POM,对吧?多了一个子模块,叫做hot item,呃,It。
02:00
Analysis,而此模块这里呢,诶直接也多了一个po文件,指定了当前它的这个parent,就是我们上面的负项,所以接下来其实我们主要的这个代码应该会放在哪里去呢?应该都放在这个子项目下边,对吧?所以负项目我们只是做一个,诶就是整体的管理和规划就可以了啊那这里我们直接把这个副项目的source文件文件夹就可以直接删掉了,然后接下来我们看依赖,哎,那依赖整个这个项目里边到底要用到哪些依赖呢?诶大家可能会想到最起码我们要用flink去做数据统计分析嘛,那当然要用到flink对吧?啊,还是之前我们说的这个,呃,引入这个flink和和这个flink streaming啊,这两个包肯定是要引入的,然后另外大家想到实际应用场景里边,是不是最常见的数据源,应该就是前面要接上卡夫卡呀,哎,所以这里面卡夫卡也肯定是要的,对吧,呃,夫卡的那个连接器依赖。
03:00
哎,相关的依赖肯定都要引入,所以这里边我们能想到的这是最底层最需要的东西,我们就直接把它放在副项目的po沫文件夹下啊,哎,那在这个之前之前我们在那个本身在理论学习的过程当中,大家都是一个依赖,一一个依赖直接引入就完了,我们在这里如果要是真实做项目的时候呢,诶,大家注意一下这个规范化的一个过程啊,我们最好是要先去定义一些properties,大家看这个properties里边主要定义的是什么呢?这里边其实都是版本信息对吧?啊,因为这里边假如说我们当前这个项目大了,有可能下面的拈子拈是不同的同事合作去开发的,那假如说你自己的这个版本,就是你引入依赖的时候,你引一个他引一个,然后我们不同的这些组件呢,引用的版本还不一样,那最后就会导致出现版本冲突,对吧,有些地方就会出现莫名其妙的bug,所以这里边为了统一管理版本,我们一般情况都。
04:00
都是在负项目的pop文件里边,直接把它声明出来,大家看这个flink version对吧,我们当前是一点十点一,然后这个scla的那个bary version2.12对吧?啊,另外还有一个卡夫卡的version,我这里边给的是2.2.0啊,这个无所谓啊,大家看,就是我们当前需要的这个,我这里边的卡夫卡version,其实指的是就是卡夫卡的客户端的那个那个version对吧,就后边本身卡夫卡,呃,就是我们那个server的那个version,大家知道,其实到这个0.11 0.12啊后面,呃呃,我们引入那个连接器的时候,到时候我们去单独再去看就可以了,这里边主要是卡夫卡client的那个版本啊,然后我们直接把这几个先先引入进来,我就直接copy到po文件里面来了,然后有了这几个之后,接下来我们看要哪些依赖呢?哎,Flink对吧,Flink scale啊,然后flink streaming scale对吧,这两个你要用flink嘛,这两个必备,然后后边这个遇版。
05:00
的地方就用Dollar符,然后引入前面我们指定的这个property就可以了,就有点像我们在shell脚本里边写的那个引入变量的那种方式啊,Dollar符加一个大括号,或者有点像我们SC拉里边做这个呃,模板字符串啊,里边去做替换的时候那个写法类似啊,那接下来还需要,呃,那当然还需要这个卡夫卡对吧?卡夫卡这里边我引入的是卡夫卡的那个client啊,然后后边是针对应的那个skyla的那个版本,还是2.12,然后另外还有一个非常重要的是弗link卡夫卡连接器,然后大家发现啊,之前我们flink卡夫卡连接器后边不是有一个那个0.11指定当前卡夫卡serve的版本吗?诶,那现在怎么就这这里面没有了呢?诶,那这里边如果没有的话,我们用的就是一个通用连接器的版本啊,就是在这个2.11之后啊,是给我们弗link给我们提供了这个卡普塔的通用连接器的,一开始的时候呢,是这个通。
06:00
连接器还不够稳定,所以一般项目里边推荐大家还是指定具体的版本啊,当然到现在啊,就越来越到后来之后发现这个通用连接器已经越来越趋于稳定了,那我们就不需要去再做具体版本的定义了,对吧?通用连接器它会自动跟踪我们当前这个卡夫卡最新的版本去做对应的调整连接都可以实现啊,那这个就没有对应里边那个卡夫卡serve的版本了,好啊,这里边我们要的就是这些依赖,直接把它全部copy过来,这是dependences先放在这里,然后后面大家一定还记得,后边还需要引入呃,Build里边的一些插件,对吧?Plugins这里边还是要引入的,我们这里边呢,同样还是引入了一个scalela plug in对吧?呃,进行这个编译的这个组件,另外呢,还还引入了一个ma assembly planning方便大家打包,对吧?呃,一个编译插件,一个打包创插件,跟我们之前在里。
07:00
论部分引入项目里边引入的那个插件是一模一样的啊,这主要是方便我们实际提交操作,好,那我就把这个直接copy过来,引入build好放在下边,然后把这些东西都引入之后啊,大家应该可以看到,诶,我们在这里边刷新一下啊,应该能看到当前的这个user behavior下边有这样的诶,四个对应的依赖对吧?另外我们plugin下边这里边引入了maven assem打包的这个插件,另外呢,还引入了我们编编译的这个skyla maven plug in对吧?这两个插件都有,而且我们会发现诶这个子项目泡门子子模块啊,泡文件里边要引入别的东西吗?好像没什么需要专门引入的对吧?好像用到的也就是这些,而且我们发现负项目引入之后,子项目里面就都有了,对吧?诶,所以负项目这里边其实是一个通用引入,我们直接把它全放进来就完事了啊,那接下来就直接写这个子项目里边写实现的代码就可以了啊,那接下来我们就在子项目里边,具体代码当然是要放在source main下边对吧?诶,这里面大家看到还有这个,呃,本身默认的是这个Java这个目录啊,那大家可以在这去新建一个呃,Directory,然后去market as,如呃这个source root对吧?或者我这里边如果要是想偷懒的话,直接去改个名也是可以的,对吧?你直接把它改成skyla,我直接去用也是没问题,然后接下来我想要的数据,那是不是应该要放在当前的resources目录下边来啊,对吧?哎,所以这里边我需要把之前大家提到的这个user behavior这个数。
08:45
据直接复制过来,直接放到我们当前的resources目录下,接下来我们读取数据的时候,直接从这个文件里边读取就可以了啊,大家看到这个里边主要的这个数据一共有40多万条啊,啊,这是一个真实的电商网站的数据,当然已经做过ETL了,大家看到就是按逗号分割的一个CSV文件啊,对应的每一个字段我们也都已经它知道它是代表什么含义了,接下来我们要写代码的话,那当然就应该是在这个skyla下边直接去new一个skyla class了,对吧?啊那当然了,就是大家还记得就是我们在添加,在新建一个这个微问项目的时候,大家最好是要把那个就是把那个skyla的那个项目支持框架支持要引入,对吧?我这里边是已经引入了,所以说大家看到就是没有问题的,要不然的话,你这里边还不能直接去用这个skyla class啊好,我们先把它当前自然是一个。
09:45
分利对象object了,对吧?啊,就是直接我应该是可以直接执行运行起来的一个代码嘛,所以当然是一个object,然后当前我带上包名定义啊,当前的这个对象名称啊,com.at硅谷点啊,当前我这个是hot it analysis,另外当前的这个对象名我就叫做hot it,把它创建出来,所以接下来我们的代码直接在这个里边去实现就可以了啊,我们的整个这个项目的框架就先搭起来了。
我来说两句