00:00
好,那我们上午呢,是把这个工具类写好了对吧,JDVC的一个YouTube,这个就可以查这个菲尼克斯的一个数据,然后我们也测了对吧?呃,但是呢,这个东西啊,它我们当时封装的这个工具类啊,就奔着通用去封装的,也就是说只考虑它这个通用性查询语句啊,还有这个类型啊,以及它这个东西对吧?但实际上呢,我们当前这个项目里边用。当前我们项目里边用呢,只用去查询这个。维度数据就够了,那我们想啊,呃,我们现在呢,可能有这么六个维度啊,用户这个来看啊,在在这边我们来给大家看一下。我们有这六个维度啊,地区,用户,品牌品类和SKU,对吧,我们要去查,但是大家想啊,在查的时候,首先这六张表呢,都在。
01:04
都在什么Phoenix对吧?呃,那连接可以用同一个,好,那接下来呢,查询语句呢,大家想一下,对于这六张表查询语句当中,他们只有什么不同。有哪些地方不同啊?我们根据事实表里边儿。ID来查询维度表对吧,那你想一下这个S有什么不同。啊。在我们查多张表的时候,这个circle有哪些东西不同啊?主见。表明关联字段,哎,对了啊,表明也不同吧,你不能光说这个条件字段呀,你表明一样吗?
02:03
对吧,整个搜那肯定是表明和字段都不一样嘛,对吧,字段的这个值,但是字段的呃名字都一样,都叫ID对吧,所以呢,关于他而言啊,我们对这个工具类呢,再进行一个封装,方便后续使用。对吧,啊方便来用啊,那这边呢,我们再写一个啊,当然你不写也可以啊,当然这个呢,写了的话就会更方便一点,后续再用的时候更方便一点。那我们叫第二。查询维度的一个工具类,对吧,好。哎,这个不是public static。呃,那这边的返回值我们直接写杰森object,然后呢,叫get in for。我们就这方法对吧,好,那我刚才说了,主要的不同的点在于一个表明一个ID对吧,所以呢,这两个东西那我们肯定要传进来,好,当然了,连接要传进。
03:15
连接。哎,这个地方。连接我们给它插进来对吧?呃,然后呢,还有一个是ad吧,Ad插进来啊好,那这三个都有了,第一步先拼接circle。查询语句。对吧,啊,那这个呢,比较好写一点啊,我们就直接string,然后呢,Query circle。副值啊,然后首先是select新from。对吧,呃,拼接上期末。看这个点它的一个STEM啊,在拼接上一个点,在拼接上我们的一个表明啊,拼接上表明,呃,在拼接我ID。
04:08
等于对吧,啊给ID要等于。等于什么呢?等于咱们的这个ID对吧?啊,等于咱们外面的这个ID啊,这个搜有没有问题啊。就相当于我们要写的是拉新一张表,然后为ID等于一个值嘛。对吧。是不是要做的这个事情啊。呃,那大家想一下这个有没有问题啊。这个思维语句有没有问题啊?这个三个语句同样的还存在一点小小的问题啊,存在什么问题呢?来。他的问题在这一个单引号,单引号。
05:03
对了啊,就是这边有个单引号,这边呢有个单引号啊,实际上我们的搜真正的写出来的应该长什么样的。Select新from a db.tn对吧,Well ID。等于18。是不是应该搜索语句应该长这个样子,所以你要注意一下啊,这边有个单引号,这边也有个单引号啊,OK吧,就跟之前我们在拼接插入语句是一个道理。对吧,有没有问题。这个应该没啥问题吧,对吧,好呃,那接下来呢,我们就查询。Phoenix啊,查询Phoenix对吧?呃,连接呢,在外面传进来的,所以呢,我们这边直接carry,嗯,调用我们的JDBC。
06:06
YouTube.query list connection传进来,So query so,对吧?呃,第三个位置我们就接省。Object class。最后一个我们就用for。对吧,好单位得到一个query list啊query list那这边呢,还是DM音符这个余常对吧,我们还是抛一下啊呃,然后呢,返回结果,返回结果那就点。因为我们现在限定死了ID单个值了,所以说这个虽然我们看到是一个list,但实际上它里边也只有一个值。对吧,它里边也只有一个值,所以呢,我们直接获取零就好了,对吧?啊,直接获取零,呃,那我们也可以把这个来查一下,我们比方说查这条数据吧,ID143对吧,就这个位玉平啊,就这条数据ID等于143啊行呃,那么接下来呢,我们在这边测一下,看我们这个O不OK啊,那就是get。
07:16
然后呢,第一个连接,连接的话,我从这个地方我去拿一下,我就不写了。这个地方有这个连接。抛一个大的异常出去啊呃,然后呢,连接传进来。第二个位置要一个表明,表明的话,咱们是这个DMU对吧,好好第三个位置呢,是一个ID。143。那我们把这个打印一下啊,看下它O不OK,然后呢,我把这个链接关一下。
08:00
那这是风光一下我们的这个查询维度,那以后用的时候就方便一点,对吧,只要表明和ID,因为这个三个语句对于当前我们这个项目当中用法来说,只有这两个地方不一样,所以我们就把它在封装一层,方便我们当前这个项目用。而我们之前写的那个JDBC的一个U,它是非常通用的啊。那有的公司在开发的时候把类似于这样的东西啊,叫做handle。啊叫DM handle就是处理的,然后呢,放在一个handle包下,它就跟业务相关的一些工具类,而之前写的gdbc u是跟业务不相关的工具类啊,什么业务都能用对吧,而这个地方呢,我们是当前这个业务才用的。好,那确实是这个数据对吧,叫魏平这个数据啊,其他的我们暂时先就不做校验了啊,143啊F对吧,来看啊。
09:00
粘的对吧,也没有问题啊呃,也就是说这个数据都搞定了没有,做了一层封装,封装好以后呢,我们要测一个东西,测什么东西呢,来看啊这个地方比方说连接,那大家都知道,未来我们肯定写在open。生命周期方法里边对吧,所以大家创建一个也就够了,好那我做一个什么事呢?在这边我获取一下。连接获取到以后,我获取一个start,然后这边执行查询并打印对吧,好点current minutes这个呢,得到一个and。在结束之前,我们打印一下这个start减去这个啊and减start吧,要不然是负数对吧,减start,好,那我们看一下它的一个查询的延迟时间啊,走的Phoenix延迟时间,而且大家注意这个143我们还查过一次,对吧?啊,其实在菲尼克斯里边它还有这个读缓存是不是。对吧,其实菲利克斯慢啊,就慢在这儿建立连接,但是这个呢,是生命周期方法直接创建的,那我们就看一下它的查询。
10:10
如果说这个值没有被查过,其实它会更难。好,那这个地方看啊,441。441好,呃,那这样啊,咱们这样做第二次长。Minutes。因为我们知道,对于。对于这个而言。对于贝而言,它是有这个什么。它是有客户端的缓存的。有客户端的缓存的,所以第二次查应该比第一次查能快一点啊,但是我们看一下啊,我们我们把这个稍微记一下,刚才是440多对吧。那没关系,这儿也有啊,每次查询的呢,大概不差不差多少。
11:06
但是生产环境当中,服务器啊,肯定比这个快一点,四百六十三十三对吧,第二次由于客户端有缓存啊,客户端有缓存有什么好处呢?我们想一下Adam,它读写的读的过程,首先它是不是找ZK。找ZK获得什么啊,Ta表所在的reading so,对吧?好,那接下来呢,他又去找这个数据,把Meta表的信息拿到,最后再去找这个表返回信息,对吧?走这三步啊,那为什么第二次比第一次快这么多呢?是因为我们客户端并没有关对吧?我拿着同一个链接下的客户端并没有关,那这一次跟这一次不用走了,因为它在这儿会缓存原数据信息。所以呢,要更快一点啊,但是呢,我们就算啊,所有的客户端我没关对吧,不用去找这张表不用找啊,十三十三我们想一下,我们现在算单变形度啊。
12:08
算单个平行度可以吧。单变度13,那单个平度13的话,如果说我们为了不让它出现这个。反压。那其实一秒钟我们最多能处理多少条数据?我们不考虑处理数据的延迟,只考虑访问。因为其实在整个。Li流式程序当中还是Spark流式程序啊,跟第三方框架交互,往往这种时候呢,是比较费时间的。朋友说了。啊,快速算一下1000吧,对吧,这是注意这是13毫秒。对,1000除以13啊,1000除以13大概在80。
13:02
左右。对吧,差不多。啊,因为12.5的话就刚好嘛,12.5刚好80,其实还不到80呢。对吧,好,呃,那接下来呢,你看啊,假如说我们有十个平度。十个病度啊,十个变异度的话,那一个80,那也就是说每秒钟我最多处理800条数据,如果说你每秒钟。超过800条,假如说每秒钟有1000条数据啊,高峰期每秒钟1000条数据,那么是不是就会产生反压。是不是?对不对,你超过这个值是不是就产生反压,这个能理解吗?因为你一秒钟来了800条数据,但是我只能处理什么,来了1000条,但是我可能只能处理800条,对吧,我还没有算上处理数据呢,还有乱七八糟,我只是看一下这个访问时间。
14:03
对吧,啊,所以呢,这个就产生反应,那所以我们要对这个内容呢,做一个优化了,你不能这样玩。对吧,这样玩不得行。啊,这样玩不行对吧,所以呢,我们要对他做一个什么呢?做一个优化。啊,做一个优化对吧,是这个意思啊,所以说这是我们写的这个工具类以及优化的一个必要性,因为如果说你这样的话,呃,一个变异度只能处理80条数据也太少了,对吧,一秒钟处理80条数据也太少了,因为我们生长环境当中,真的数据量上来高峰期那可能一秒中。你像你像那个像拼多多吧,拼多多大家知道他们每秒钟的数据量高峰期的时候是千万。是千万级。吓人吧?对吧,处理的数据量。啊,千万级,所以你想想看,那光加冰度也不靠谱吧。
15:03
光加并行度肯定不靠谱,我们同时还要提高单个并行度的什么?处理的数据量。对吧,啊,这个要注意一下,所以这个地方是很有必要要做优化的啊,那就算生产环境当中比我们那个快,我们现在虚拟机啊,确实慢一点,对吧,那我就算你什么。算减一半呗。对吧,啊,我就算五五的话就1/3了,对吧,啊,1/3的时间五毫秒,那其实一条一个密度也只能处理什么200条数据吧,一秒钟对吧?啊,也只能处理200条数据,那你十个密度。那也就2000条呗,还还差远了呢,对吧,还差远了呢,所以呢,这块我们很明显要做一些优化了。
我来说两句