00:00
来呃,还是打开我们这个西求三这块,Q3这块,呃,那到目前为止呢,咱们说我们整个的需求呢,说在我实时这块,我给大家呢啊列出四个呢啊,一个是日活对吧,这是咱第一个做的一个数单分析对吧?然后呢,一个是我们这个订单明细,它的一个实物分摊对吧,和交易额统计这一块,这算第三个对吧,但其实啊,咱们现在呢,仅仅是把前半部分做完了对吧?具体对我的交易额统计呢,这块咱们其实呢,对吧,还没有完全去弄完,对,为什么?因为我这里是不是设立可令house呀,对吧,设定可令house,咱们要想去把这个交易额统计出来,那这个时候呢,你数据已经保存clean house里面去了,对吧?那么咱需要把这clean house数据呢,给它查询出来啊,给查询出来,呃,那么所以说呢,咱们前一天给大家单独把这house呢,对吧,给大家介绍一下对吧?呃,那么对于我的clean house来讲,那我希望大家呢,能知道对吧,它的一个对吧,这个位置就在他。
01:00
大数据这个体系里边对吧,它位于什么位置对吧,它其实呢和我们这个ES对吧,麒麟和P其实这些呢是一样的,都是我们这个olap对吧,这样处理引擎对吧,然后呢,他一般呢,这个经常在面试的时候呢,他可能会和谁进行对比呢?和我们这个呃ES对来进行对比对吧,那其实他俩主要的这个没有什么的忧劣对吧,因为看你使用场景对吧,你像从我们这个处理的数据的量来讲,像ES呀,然后呢,咱们这个h base呀,包括在clean house对吧,那其实呢,他们呀,对吧,这个都是处理海量数据的对吧,但是很少会拿着h base和他们来进行对比,为什么呢?因为h base一般更倾向于我们这存储对吧,更向于存储对吧,然后咱们现在呢,如果做我们这个分析的计算的话,那么咱们一般呢,是用我们这个ES,或者是我们这个clean house对吧,那么它俩呢,那如果要是再从我们这个分析来讲,对吧,那ES呢,更倾向于。
02:00
做我们这个全威检索啊这块,那么如果clean house的话呢,那么它和ES相比对吧,在全威检索这方面能力呢,要稍微差一些啊,能要稍微差一些,然后还有一个呢,DS啊,它本身有一个我们这个可视化平台给班的对吧?就直接呢,可以对这个非常容易的,然后和给班的进行一个无缝的结合,对吧?那咱们现在呢,如果click号的话,那到时候你还得去找其他的一些格式化平台来进行结合,它肯定不如我们这个对吧,这个ES加K班的对吧,这么灵活,这么简单对吧?然后还有一个是什么呢?就是我们clean这个ES本身呢,这个在我们的分析的时候,它是不支持我们的join的啊,但是呢,我们的clean house它可以支持我们的join操作啊,可以支持join操作是吧,然后接下来那么咱们呢,把这个clean house这个安装啊,一些基本语法对吧,进入完之后对吧,那么这块呢,大家应该把这些命令啊,对吧,都走一遍,那么重点关注什么呢?重点呀,对吧,对他咱们常的一些数据类型对吧,那你得了解一下。
03:00
然后第二个呢,那么咱们本身的执行的时候,它是不是有很多表引擎啊,对吧,那么咱们其实用的比较多的是不是就默认tree以及默认tree它引申出来的一些对吧?哎,包括咱们在做我们这个什么重复数据驱重啊,包括咱们在做一些我们这个副本呢,包括在做机群的时候,其实呢,都是根据不同的表引擎来实现它的功能啊吧,虽然表引擎这块大家呢要做一下,对吧,就是咱们虽然说我这个东西现在呢,我们可能啊以后啊,你们可能也不用,对吧?呃,但是呢啊大家注意,你既然学这个东西,你要把我这个讲义里边所涉及的东西都走一遍啊,都走一遍,然后接下来咱们就回过头来啊,咱就回过头来来干什么呢?来看一看我们现在接下来我要完成的功能,我们现在已经把订单明细它的一个实物分摊啊对,给他做完了对吧,那我大概看一下你们代码对吧,基本上呢,你们现在十物分单对吧,双流状都已经完成了对吧?那么完成之后,咱们现在是不是仅仅是你把它打印的控制单给我看了一下呀,对吧,那我现在呢,要把咱们现。
04:00
在对吧,这个订单和订单明细他俩呀,经过咱们那个双流join之后,对吧,经过咱们的计算之后,得了十物分单,这个结果给干什么呢?给保存起来啊给保存起来对吧?那么你现在要保存的话,往哪保存呢?对吧?那么这个时候我希望给它保存呢,我们这clean house这个区对吧?那么如果说在咱们这里边对吧,那咱们要处理的话,对吧,那咱们应该到哪的呢?那应该对吧到这一块了对吧,那本身你现在呢,把这个数据已经呃放到我们现在这个不同的层里面去了,然后接下来我们这里呢,诶是通过我们一个SPA程序对来从我们这个卡卡里边把这两流给读到,那么读完之后呢,他做了一个我们这个双流join啊,这块其实做了一个双流join啊,这个做一双流join对吧?哎,那么咱们在这块啊,那我把这个颜色呢,也给变一下对吧,把这颜色也变一下对吧,其实这块做做的东西呢,比较重要对吧,它其实比较重要的对吧,有双流状有什么实赋。
05:00
付对吧,分摊,然后接下来,那么咱们再往下走,这要干什么呢?说我现在呢,要将订单以及订单明细对吧,就是咱们双方重得了结果,然后保存可令号里去,那么如果你要想往clean house里保存的话,同学们,那首先这clean house,那你是不是得给我环境搭建好啊,对吧,环境你得给我搭建好对吧,那么搭建好之后呢,当时我们在搭建环境的时候,同学们,咱们启动的时候,这东西怎么启动,它是不是一个我们这个系统服务对吧?我得通过咱们system ctl,然后start click cross-server去启动的,而且我们当时在安装完毕之后,我们做了一个事儿,把开机自启是不是给关掉了,对吧?所以说呢,那咱们现在如果想用的话,那这里我是不是应该把咱们这个这个服务先给提起来,对吧,但是你直接把这个这个这个应用打开,直接取的服务,那会报错的,他前期要求咱们起一个别的东西吧,起谁。对,它的是组keepper嘛啊,因为大家现在应该都是集群模式对吧?如果是集群模式的话,那么这个时候你需要干什么呢?你需要把那个组keepper对吧,给我集起来啊,你需要把这组keep给我集起来,只要你配置了我们这副本对吧?或者是你配置了咱们这分片集群,那么这个时候呢,对吧,那么你就应该呀,把咱们这个对吧,这个组Q提起来,然后另外一个啊同学们大家想一想,这个这两天也有两不利,同学问我两三个同学问我了对吧,咱们再去讲我们可号分片机群的时候呀,那咱们这一个短说我针对我当前的环境啊,对咱当前的一个机器的限制,一共三台机器对吧,咱们这个这这个机群是怎么安排的,咱们基群规划是怎么做的?102对吧,然后呢,103对吧,然后还有一个是104,咱们整个分片是不是分两片对吧?这个呢是一片,然后这个呢是不是一片对吧?然后接下来咱们这个102上这个片是不是有副本,然后104这分片的是不是就没副本对吧?那同有同学可能就问了。
06:52
说老师呢,你这个没副本不好,你不能把104副本放在咱们这个102或者103上吧,对吧,这不行吧,对吧?当然可以,那就如果说咱从配置角度上当然可以,但是注意同学们,咱们如果这么配的话不合理,为什么呢?咱们这个东西叫什么叫分片集群,你什么时候要资金分片,是不是说我现在一个表它的数据太多了,你当前的一个节点放不下了,然后我是不是才要给它进行分片呢?对吧?那你现在假如说102,你要对它进行一个我们这个分片的话,对入102数据进行分片的话,那你是想把102的数据,然后给放到104上来帮你去分担一下,结果呢,你又把104它的一个副本又放到102上,那你想一想。
07:32
对吧,这个是不是这个都冲突了呀,本来我地方不够了,你还让我给你放什么副本对吧?诶所以说呢,这个呢,他一般咱不这么干啊,一般咱不这么干对吧?哎这块呢,你要知道一下啊,这个你要知道一下对吧?呃,其实呢,还有一个啊,就是咱们现在呢,在我们这这个大家之所有这种想法,可能是因为咱们现在对吧,这个贫穷把咱们的想象力给限制住了,为什么呢?因为咱们从第一天开始去这个去去去学习的时候,咱们呢,就为了结合我们的资源,咱们就是三台机器对吧?然后呢,这个比如说在讲handle豆的时候,咱们呢,这个102又当什么内部notde对吧?又当data notde,对,还得当什么对这个呃,什么resource manager是不当这些东西啊,对吧,但其实呢,咱们在真正这个环境下,如果你要是不差钱的话,这个东西它其实可以分开的对吧,可以分开的对我不会我我如果要是咱们这个服务器对吧,要是多的话,我可以把内部note单独拿出来对吧,我现在102对吧,我就管我就我就我就内部note,对我就内部note,然后呢,我这note我就。
08:33
就放在咱们这个103104105上对吧,是这样的对吧,而不是说我现在这里边的话,又当又当这个什么短内not又当manager对吧,他还得当什么,咱们这not不会这样啊,不会这样好了,呃,然后接下来呢,那么咱们呢在这里是吧?那我们呢,把这个表短先创建出来,对吧?呃,那么如果要创建表的话,这个创建表的语句呢,我直接把这个CTRLC给拿过来,注意啊,这个是在我clean house里面建表啊,在咱们house里建表对吧?来把这个东西呢CTRLC给拿过来。
09:04
那么咱们建表的时候呢,我主要关注的不是说表这这字段对吧,像这个字段呢,大家以后呢,如果说你真用的东西你跑不了,同学们啊,这些东西你跑不了,你肯定呢,你得把这字段说这个字段取名啊对吧,这个字段呢,那咱们出个类型啊对吧,那这个字段呢,那么咱们对吧,这个里边到时候得和我们这个样例类啊对吧,他得关联起来对吧,这个东西肯定你得设计对你得设计对吧,那咱们这里主要关注什么呢?我主要关注这几个东西对吧,那一个什么,一个是我们当前那个引擎对吧,引擎这个引擎呢,一看是我们那个releing对吧,那releing,那这个时候咱们在当时在在讲的时候,对吧,他的时候可以做一些我们的替换操作呀,对吧,但是注意啊,就是我们现在使clean house的时候,它的一些什么驱虫啊,对一些去替换的和我red都不太一样,它一般是从什么角度考虑呢?他是从我系统优化的角度上,对吧?来我现在这个分析完了啊,我把一些重物数据大家分析重复数据给他干掉,对吧,释放一些空间对吧,是这样的对吧,然后机。
10:04
下来这里还有什么呢?还有这三个属性,那么其中这三个属性谁比较重要?Order by,对吧?因为咱们好多操作都是基于它来做的,对吧?它比咱primary key呢,其实还要重要,因为这个primary key呢,它并没有唯一标记的这个作用,它只是起到了一个一级索引的作用,对吧?一级索引,所以说呢,咱们现在clean house它算是密等性数据库吗?这个东西都不算T对吧,这个东西呢就不算,没有办法去保证咱们密令性啊,没完保证密令性对吧?来那这会呢,咱们现在把这个键面语句对吧,CTRLC拿过来,呃,拿过来之后呢,那我在这里啊来把这个东西CTRLV对吧拿过来,然后把这个改一改,这个呢是我们的订单的一宽表,然后改成咱们0523,然后623,然后CTRLLC复制一下,大家注意啊,咱们前天呢,已经布置好集取模式了,但是呢,我为了节省它资源,我的集群节点呢,我就起一个啊,我就起了一个我们这个202对吧,因为咱们说这个house啊,它这个集群呢,对吧,咱们它是以什么为单位的,表为单位的,那就是本身我现在已经配了集群了,但是呢,我在创建表的时候,对吧,那我可以指定哪张表使用集群,哪张表不用我们的对边集群,对吧?比如说我现在创建的时候,对吧,那我这个呢,就没有指定我这个非常集群,如果要指定的话,这里是不是应该加了一个on,然后加了在什么什么集群的创建表了,对吧?哎,那么这会呢。
11:27
那你要注意一下对吧?来,那现在呢,直接把它给拿过来,然后把这个呢给创建一下啊把你创建一下,那么创建完之后呢,咱们这个show peoples对吧?那你可以看到咱们当前呢创建的这个是吧?这个订单宽表啊创订单宽表,然后接下来把这个表创建好之后啊把这个表创建好之后,那么接下来咱们该干什么呢?那就得想办法把我这个代码呀,把这个程序对吧,把这个数据保存到我们这个clean house里面去,那么你要想往clean house保存,那么这块呢,对吧,需要在我po文件里面添加c house相关的依赖对吧?来但他现在呢,把这个依赖给它加进去对吧?CTRLC啊复制一下,呃,那么这块呢,其实也有坑,只不过这坑呢,我帮大家呢,给它给个填了对吧,就是你看我现在呢,在咱们这里同学们把这个关掉啊,把这关掉,呃,然后来到我这里,我呢去把这依赖给加进来啊,去把咱当前的这个依赖给加进来,那么在咱们加依赖的时候呢,大家看正常情况下,那我这里。
12:27
对,我是不是直接把这个GV给倒过来就行了呀,但是我这里有什么呀,叫excllousion对吧?那这exclusion那什么意思,是不是要从我当前这个依赖里边把这两个依赖给排除掉对吧?其实呢,那他这里面是有什么问题呢?就是我现在在以依赖的时候,他这两个依赖版本和咱们已经存在的依赖版本这些东西呢,不一致啊,不一致对吧?诶所以说呢,我要对把这个依赖这这这我当前这个这这这里边是吧,他的依赖这两个东西他的版本呢,给他排除一下,就不使用他俩了啊,不使用他俩了对吧?那如果当他出现这种情况的话,那怎么办对吧?那只能去网上查看看对吧,他一般在报错的时候,导师肯定告诉你什么什么东西对吧,这个出现冲突了或怎么样,对吧,那咱们现在呢,然后一看,诶,那那我去把哪给排除一下,那一般是这样,那一般这样,呃,然后接下来咱们现在呢,把这依赖填完之后呢,那我在我们这个order we里面要去填写对吧它对吧,往我们的clear house保存的代码对吧?那么这里呢,就有个问题了,怎么去把咱们的数据呢。
13:27
保存到我们这个clean house里面去,对吧?那这里边呢,咱们把这个东西打开啊,打开打开之后呢,咱们现在仅仅往外这个输出啊,注意目前为止你们代码应该和我是一样的,对吧?因为你们刚给我看完这个东西嘛,对吧,那我现在再往下写,写什么呢?我现在要向我们这个clean house中啊,向clean house中去保存我们这个数据啊,保存数据啊向啊,那么如果像可house保存数据的话,这个东西嗯,怎么保存呢?有没有什么咱们这个实现思路呢?和ES一样,这个不太一样,对吧?和谁一样,我信呢?和买SQ一样,我比较信对吧,就这个东西,因为咱们可林的house啊,说它本身是不是也完全支持我们的S,对吧?所以说呢,其实在咱们这里边,对吧,他在操作的时候,他也遵循的是我们的GDBC做这个协议,对吧,那我现在呢,如果遵循这个协。
14:27
的话,那咱们现在往my circleq里边怎么保存数据,同学们你们学会Spark对吧?你们学Spark怎么样,咱们现在把我这个数据对吧,保存到我们那个买这个数据库的表里边去的,建立连接,做作驱动啊,啊这这思路不错啊,咱现在走走怎么办呢?在这里是吧,我完全可以对在这里去这个对方1D一下,大家思路可能这样的,在里CTRLC,然后接下来FOR1RD对吧,点我们这个for each r DD对吧,然后接下来在咱们这里面整体干什么的,去创建连接对吧,去什么建立驱动对吧?注意啊,如果你要写在这的话,会有问题的,RDD,然后接下来再到这里边,然后你写这一套对吧,什么建立连接,然后什么制作驱动,然后接下来咱们RDD是不是得把这数据一个保存啊,那你是不是要for对吧?然后你在这里是不是获取连接对吧?这样写会有问题的,同学们,这和你们一开始写报错的原因是一样的,你在这获取连接,然后你现在for RD里边你是不是使用连接。
15:27
使用咱statement呀,他会给你报错,报什么错,Statement没有序列化,而且当时你们在讲的时候,这个东西你想改都没办法改,因为statement不是你咱们自己写的对吧,所以说这块呢,你要想通这种方式的话,这个东西,那你应该把把这里边顶多顶多你在这里加一个什么呀,For partition,然后在咱们这以分区为单位,然后呢获取连接对吧,然后咱们现在呢,你如果要拿到东西的话,这里应该是我们现在一个itr嘛,对吧,然后接下来你在这里对吧,去把连接你获取到,然后这数据呢,一条这进行操作对吧,然后你的把这个RDD的数据拿出来对吧,但这样我觉得太麻烦了。
16:08
这样也太麻烦了,就咱们自己来写对吧,太麻烦了,就你们没有,就你们在在在在在学单词法的时候,就没有可以直接操作我们那个对吧,这个MYSQL的这个方式吗?比如直接把这个数据给拿过去了,有没有RDD,你们先告诉我有没有那RDD对吧?可以直接到我MYQ里写数据的,这里有一个什么呢?是有一个叫JDBCRDD啊,这里个DDBCRDD,那么这个GDBCRDD呢?注意啊,在这里我只是把这个东西大家介绍过对吧?介绍一下对吧,以前没介绍没关系,对吧?那么如果要是GDBCRDD的话,同学们,那么在咱们这里边呢,也需要传送些参数过去。啊,你现在可以通过什么呀,就是我假如说啊,我现在有些数据,那么你可以根据什么,你可以创建一个GDBCRDD,对吧,然后接下来来帮助我呀,把这个数据对吧,写入到MYSQL里面去对吧?那么首先第一个参数这个应该知道,就是我们Spark程序呀,它直接的上下文对吧,这第一个,那么第二个呢,这个呢是获取连接吧,第三个那你现在要操作咱们这个对吧,这个数据库,那直接搜后语句是什么?那第四个和第五个呢,那么这两个一看叫log bound,还有一个是Apple bound,这应该好像这个范围对不对,对吧,这应该是范围,然后这块呢,是一个分居数对吧?那么咱们现在这个范围和分居数他们之间有什么样的关系呢?同学们,假如说我现在啊,我要从我的数据库里边来查询,我们现在100条数据出来,然后呢,我这里有几个分区呢?假如说我现在呢,由我们现在五个分区,那么如果五个分区的话,那意意味着什么,咱们是不是得有五个线程去做这个事儿了,那。
17:54
分母现在做这式的时候,它在差距的时候,那零号分区,一号分区,二分区,三号分区,四号分区对吧?那假如理想点状态零号分区,那应该处理零到咱们那个20条,然后一二分区呢,21到到什么40,然后接来41到到什么60,然后61呢,到咱们这个80,然后接下来81~100,是不是应该这样来处理呀,对吧?那么咱们怎么样呢,做这么和谐呢?就是根据咱们当前呢,在执行的时候,你的分居数和谁呢?和咱们这个啊叫log border以及ever border对吧?那么这个呢,代表什么,代表一个范围,它会计算一下当前我在处理的时候,这个分区它的一个起始值,还有一个什么,它的结束点是什么,就是在这个上面呢,它会有对吧,这个上面呢,它会有对吧,那么咱们现在呢,这里比如说我在指定分区数的时候,那么它呢,会根据咱们给定的我们现在对吧这个long以及呢,我们这个对吧来进行计算对吧来进行计算对吧?那么这块呢,就是刚才我说说的这个它。
18:54
它三个其实呢,是结合在一块的,对接一块的,然后接着这是什么呢?那一看这个东西脉不肉,那应该是什么,是不是结果集呀,对吧,你可以对它结果集呢来做一个处理啊,对接口级呢来做处理,但是大家发现这个东西它好像更倾向于什么,是不是更向于查询呀,对吧,这个东西它本身更倾向于咱查询,因为这个东西叫RDD嘛,RDD是不是咱们应该弹性分布式数据集啊,对吧,这个数据来源于哪呢?只不过来源于数据库嘛,对吧,但是我们现在的这个操作和他还不太一样。
19:26
对吧,因为我现在什么,我现在不是从数据库查数据,我现在呢,对吧,需要把数据保存到数据库里面去,所以这块呢,诶我给大家介绍一点东西啊,你知道对吧,然后呢,但是这块呢,我们并不太适用啊,这块呢我并不太适用。是吧,那还有没有别的方式呢?
我来说两句