00:00
呃,那接下来呢,我们就要完成将数据写到click house这个任务,对吧?那首先呢,我们这个时候可以把这个建表语句拿过来用一下了啊,那我们就把这个house去打开一下啊。我们要启动一下咱们的这个house啊呃,由于我们大家都一样,你们的这个科house里面肯定也有这种分片表。对吧,然后呢,这个副本表,所以呢,你最好把这个ZK先开起来啊。把CK开一下。好,那卡夫卡呢,我顺手开一下啊。因为最终呢,肯定要做测试,F1呢,我也得开一下,因为这是行为数据嘛,对吧,我把这些东西呢,都都开一下啊都开一下。那到最后统一去开啊好,那这边呢,我们就开的东西也不是很多,对吧,还好,然后接下来呢,开一下这个。
01:02
啊,速度。叫对吧。C-serve啊,那这个就开启了,开起来之后呢,我们就呃进到这个客户端里边,对吧?杠M表示多行。好,那受。Databases。啊,那咱们呢,有上个班的1127的对吧?好,那咱们呢,也创建一个咱们班的啊叫create database。啊,咱们呢,末下划线21112。注意啊,你这个东西呢,你不要跟我一样写,你跟谁一样写的,跟这个地方啊,一定要注意。就是你这得保持统一。我们有一个什么常量在这对吧,我这个地方呢,取的就是G末211126OK了,那你呢,在这边你就创建什么就好了,对吧,你因为默认的你从文档当中拿过来,我觉得应该是JA末rebuild。
02:10
对吧?啊,那你改一下啊,当然这个这个你也可能需要改一下啊,你也可能需要改一下,因为你的主机名可能不叫这个哈威102端口号,我觉得大家在装这个克林house的时候,应该都没有人改吧,如果你自己在装克林house的时候,你改了你知道啊,对吧,我不知道你谁改了谁没改,一般来说呢,我们都不会动这个端口号,对吧?啊,那如果你自己改了,你得知道你也要把这个端口号也要改一下啊。好,那这边呢,我们就创建好了一个数据库是吧,Use这个啊。进来啊,当然了,这里边儿肯定是目前没有表的,因为我们新建的库嘛,对吧。填一下库,那接下来呢,我们把这个建表语句拿过来,就是它对吧,这是昨天我们就分析过了啊,这张表呢,ST source keyword keyword加一个TS,最终呢,用TS做版本,按天分区啊。
03:03
这个是驱虫的条件,对吧,这个是驱虫的条件,OK吧,好,那我们把这个整个拿过来啊,然后呢,往那一放好,那这样的话呢,咱们就得到了一张表。啊,得到了一张表,表明呢还比较长对吧?啊,因为咱们这个里边它有力度,有度量对吧,还有温度啊,这整个东西比较多,所以呢都写上,确实对来说比较长一点啊好,那这个呢,就。搞定了。啊,咱们这玩意儿就搞定了,对吧,建表语句就做完了啊,那我把这个好,那接下来呢,我们就应该去写我们最后这一步了,将数据呢写到这个。Click house对吧,那这一步呢,我们之前就提到了过,呃,那首先呢,Click house是通过这个JDBC去访问的。对吧,然后接下来呢,嗯。就在于这个地方呢,很明显是单表的数据了吧。对吧,那我们很明显可以用GDP think,而不需要去自定义这个think。
04:04
啊,而不需要自定义去think啊好,那这边咱们怎么写呢,就是哎一样的拿着我们那个流啊叫keyword b they让stream点。I think对吧,正常来说呢,那我们写JDBCS。点think啊,这里面呢,传一些参数。对吧,来看啊第一个位置。啊,第一个circle,那你得告诉我这个circle,这个我们之前都看过了,对吧?啊,你在外面得填好这circle,那现在我们能填了,我知道我这个表呢,六个字段表明也是有的,那这个简单了呀。是不是?对吧,那我就六个问号呗,给六个问号对吧?啊好,那第二个叫gdc statement build,这个呢就给这个。问号去赋值对吧,给问号赋值啊呃,第三个是execution options。
05:00
这个执行选项对吧,这是做批处理的,批量提交的啊,可以用到这个参数,最后一个连接参数啊,那我们很明显可以把这玩意儿呢,写成一个工具类,因为我们当前DWS层所有的表都是要写到这个克里house的,那如果说我们每个人都都去这样调一下,那大可不必,对吧,因为起码你里边的什么执行参数啊,特别这个连接参数咱们都是一样的吧,我就没有必要每一次都去写啊,所以呢,我们对它呢,我们还是封装一个。工具类啊,咱们还是封装一个工具类,是不是感觉更好一点。对吧,啊是这样来的啊行,那既然咱们要封装工具类,那很简单,到这边来再写一个啊工具类。叫麦。House。啊,My YouTube啊好,那这里边呢,是public static工具类嘛,进代方法啊,那返回值呢。
06:00
返回值应该用什么类型啊,那很简单,这里边未来肯定调用的是什么叫,诶刚才我把这个删了对吧,这那返回值肯定是它吧,它的返回值对不对。是一个什么叫think?方式。啊叫S方式好,呃,它这边呢,我们刚才看到它有个什么,它一个泛型对吧?好,那对于我们这儿来说,我们写什么呢。大家觉得我们这个地方我写什么?这个类型我应该给什么?那这个类型给什么,你要搞清楚他这个T到底是什么东西,对吧,那大家觉得他这个T指的是谁呀。这个方法这个T。指的是输入还是输出啊。这个类型T,它代表的是输入数据类型还是输出数据类型,大家思考一下。
07:04
你觉得应该输入数据的,你得从这个想对吧,你要输入输出都搞不清楚。那就没办法聊了。这个类型指的是输入数据类型还是输出数据类型呢?啊,这个不知道吗。这肯定是输入啊。你输出什么,你你这个JDBC,你的输出是什么。好,你的输出都往外写了,你再点一下。
08:01
这个T是什么input啊,这边你看这就更清楚了,输入啊,肯定输入啊,这是蹭的对吧。啊,这都已经是think了,你还管输出嘛?你往外写,你都写到my circle写到house了,还管输出吗?对吧?肯定输入数据类型啊,好,既然输入数据类型,那你告诉我这写什么?啊,既然这个地方是输入数据类型,那咱们应该写什么呢。啊,应该写什么呢?哎,云总说这个扎病。啊,写B有没有问题,那你的输入是不是这个流啊,应该是它吧,叫keyor b对不对,应该把它写在这。
09:02
是不是?对吗?有没有问题,既然我们都已经知道了它是输入数据类型,那我们就找这个流的类型吧,它的输入不是那个流吗?是不是应该是这个keyword病啊。有没问题,没问题的扣一好吗?没问题。扣一。好。啊,既然大家都没有问题啊,那说明这个地方呢,我们就写错了。啊呃,我们想啊,你们忽略了一个点什么点呢,咱们。为什么写这个工具类啊?啊。我问你,我问为什么要写工具类啊。
10:05
我们基于什么原因来写这个工具类的?对吧,你顺着这个思路想,你就发现这就怎么样。他不对,每个类都可以用。对,为了服用对吧,那如果你写的keyword病,他还能服用吗你。你这你这11个需求都求关键字啊。都求关键词啊,这个招聘都一样啊,都是用的keyword病啊。哪可能呢,每个需求这个招聘都不一样吧。对吧。啊,每一个需求的招聘都不一样是吧?用瑞啊,方总说用瑞瑞好用吗?接下来好用吗?不好用,也就是说这块呢,就别改了。写个T。懂吧,写个T。
11:01
啊,我们就写T,就写一个泛型的方法啊,就写放行的方法,OK吧,好,那这边呢,叫get same function。Get括号,好。发现这个T呀,不错。啊,这就说明泛型方法呢,你不能这样定义对吧,你不要累累呢,你直接累后面加这玩意就行了对吧?好,那泛型方法你要做一个什么呢?注意看啊,这飘红直接报错对吧?好,泛型方法呢,你要在返回之类型前面声明泛型看。绿色的。对吧,它就不飘红了。就不飘红了。这是泛型方法的一个。定义。啊,泛型方法的一个定义对吧,那很大家写的少,所以觉得这种写法呢,很奇怪,但是没关系,我告诉你啊,那很简单,你怎么去理解呢,这个东西来。
12:01
他把这个干掉,是不是报错呀?对吧,你要想明白他为什么报错啊,那有同学说,那我定义个T,它就应该识别成那个泛型啊,它识别不了,因为我问大家啊,如果说我有个方法是思类类型,我怎么定义。或者说就是keyword病啊,刚才的keyword病keyword keyword病呢,是不是咱们自己定义的一个招病啊,对吧?好,那这个是具体类型,这个是泛型,那你告诉我这两个方法定义的有什么区别吗?那凭什么说第一个T是泛型,第二个keyword b,它就是具体类型呢?你凭啥这样说呢?对吧,那万一你你说这个是泛型对吧,你说这玩意是泛型,那万一我有一个招聘就叫T呢。我有一个招聘。就叫T呢。你怎么区分这个T到底是泛型还是招聘类型呢?对吧?啊,所以呢,你要想这玩意儿呢,它是一个泛型,很简单,在返回值类型前面做一个声明。
13:07
啊,做一个声明。啊,第一个没确定,第二个已经确定了,不对呀。不对,你第一个凭什么说没确定,假如说我有一个招聘就叫T呢。那你告诉我,你这个T代表的是差病还是犯型呢?能理解吗?所以泛型方法定义跟你写具体类型的定义啊,它不一样对吧,你要在前面把这个泛型写上。啊,声明一下这个范型啊,好,那接下来呢,在这里边返回JDBC s.S。对吧,好,它呢有具体的一个类型啊。T对吧,啊,这里边的参数我们看一下。呃,我们看一下哪些东西可以在里边写,哪些东西在里边写不了啊啊,那么第一个是一个S语句,哎,这个S语句我能在里边给吗。
14:05
就是写不了的,我肯定要从这传进来吧,对吧,在外面调用的时候就写,那你告诉我第一个参数这个S语句。我是在里边写还是在外面传进来,大家告诉我。就是我要一个这样的四个语句。我应该在这个位置写呢,还是说从外面传进来呀,这个很明显肯定从外面传进来吧,对吧,Three啊嗯,Circle。你这个东西在里边,你怎么定义啊,没得定义对吧,因为你要代表的所有的。数据。啊,你要代表所有的表对吧,你11张表。那这个so都不一样,你在里边没法写对吧,如果在里边能写的话,那我之前DM think那就能用了,我也在十几张表对吧?啊,那你那个地方呢,也十几张表啊,那不行,在里边写不了啊第二个参数它要一个。
15:11
JD bc build这个呢,是你S里面肯定有问号。对吧,你到时候每一条数据来了,给这个问号重新赋值,那么这个赋值谁做的呢?就第二个参数做的叫JD bc build。对吧,好,那这个呢,我们在这儿。JD bc statement build它是一个接口对吧?好,那这样先写一下,但是这个里面呢。比较麻烦啊,它这个难点就在这块啊,难点在这块,到时我们再聊啊,那第三个参数我们想是不是可以在里边写啊,它是批量提交的对吧?啊批量提交的,那另有一个叫JD bc execution options。点build对吧,最后呢,点那个。Build。啊,第二那个build。好,那最后一个参数是我们的连接参数JD bc connection options对吧?好,那这边呢,JD bc connection options,诶它呢,也是一样的build。
16:09
最后呢,要用build,那这里边呢,我们把这个参数添加上对吧?好,那这边呢点。With bad size啊一个批次写多少,假如说呢,咱们数据量不大,我可以给个五对吧,你数量很大,你就给大一点啊点,然后呢,我让他。一秒钟。一秒钟出发一次对吧,或者五条触发一次都行啊呃,满足任意条件去写嘛,这是批处理,那就是说你这样写死是不是不太合适,那你大不了在这边搞两个参数传进来吧,一个叫bad,一个叫interval。对吧,但是这个参数你就不用。这样了,你在外面顶多再搞两个参数,一个呢叫传一个。In的类型的,对吧,再搞一个long值排一个什么呢?Batch in the。Back对吧,啊传当值就好了,那这个还好吧,对吧?呃,那接下来呢,连接参数,连接参数呢,就是给驱动给这个连接地址呗,对吧,好点。
17:10
D。啊,对于我们的克号而言,我们刚才客户端进去的时候也没有给什么用户名密码对吧,所以这个就不需要了,而这两个东西呢,我们已经放到常量类里边了啊JA点。Drive对吧?好,那这ul就是g more咖点。加KUL。对吧,那这个东西呢,完全可以在里边去。写上。啊,完全在里面写着,但是围着这个S呢,你肯定在里边没法写,你不用想了,S咋写啊。对吧,啊肯定写不了,OK,那咱们呢,整理这个架子就搭起来了,那这样的话比就算这个东西啊,等会儿我们分析好像在里面写不了,那有这两个东西,好像我们未来写代码也也少一点,也少写一点吧,对吧,你十几次呢,对吧,你你这玩意儿写十几次呢,要不然到时候是不是好,那这个呢。
我来说两句