00:01
那么接下来咱们就来看一下各种各样的案例,那么首先呢,我们看一个最简单的案例,从stream流里面读并打印到控制台,这个其实就跟咱们刚才执行的这个是一样的。你看这个叫什么stream reader,还有这个叫stream writer,对吧?好,那现在我就大家想一想。呃,这个我没写过的话,你是不是要先找一下它有哪些参数可以指定啊,那有几种方式给大家介绍一下,第一种方式大家都看过了,对吧,我可以在git HUB上面的这个。Read me这边去看,你可以比如说my circle的读,你就点一下读,对吧,写你就点一下写,咱们的一个job的一个JA串,大概可以分成几块,一个是作业设置。啊,我写到这吧。
01:02
这是一个作业设置,然后呢,接下来是一个reader,接下来是一个什么writer在最后呢。还有其他的一些参数,像一个并发数的设置等等,大概就是分为这四块内容。那关键在哪呢?呃,作业设置跟参数这些是比较死的,不管什么数据源的写法都一样,关键就是reader writer怎么写,对吧?你可以从刚才GI塔哈本上面看,还有一种,它提供了一种方便的方式来,咱们还是执行data塔差点PY这个脚本,然后呢,大家注意两个啊,一个叫杠二,一个叫杠W2呢就是瑞德的缩写。W呢,就是writer的缩写,那你可以输入指定的reader的名称,比如说杠二,我可以看一个什么呢?String reader,但是你名字要打对啊,你首先要知道这是叫什么reader对吧?那如果你不确定,你还是老老实实在这看呗,啊,你看看这有什么reader对吧?或者在下面看。
02:07
支持哪一些的读都可以,或者你到那目录下面,咱们之前也看过对吧,好,那我回去再看一眼。呃。还有呢?W,因为我们要看整个作业的嘛,要reader跟writer对吧?对,呃,Writer好回你看。这个时候他就给了你一个模板。啊,该怎么写,有哪些参数啊,当然他没有填来,我们从头到尾看一下啊,首先上来就是什么呢?From阿里巴巴对吧?哎,谁做的,然后呢,可以让你参考什么文档。这是什么地址啊,Get HUB地址,那他的reader可以参考这write参考这跟你从GIHUB上面点进去是一样的啊。啊,告诉你命令怎么用对吧?Python,然后用data差点PY命令,再加上咱们配置好的Json文件那就行了,使用是非常简单啊,那我们看看,呃,这就是我刚才说的几个模块,呃,作业然后进来呢,Content是固定的啊,然后里面传了两个东西,第一个呢叫reader。
03:24
第二个叫writer啊,这就是一个基本的写法,那么基本都是什么呢?名字跟上参数。名字呢,叫什么?Reader参数呢?它的一些相关的东西,大家可以想一想,如果我是写一个my circle,如果让你来设计,你应该设计哪些参数啊?你想都不用想,你URL是不是得要啊,JDBC对吧?你的用户名是不是得要啊,你的密码是不是也要啊,甚至是什么,你难道整你要同步哪些东西,你是不是得告诉他你的库,你的表,甚至呢,我一张表我是不只需要同步某些字段呢?我是不是还可以指定字段呢?
04:05
这些参数大家是。自然而然可以想到的,对吧,就每每一种不同的数据,呃,不同的数据源,它的一个参数是不太一样的,但是你可以去查看啊,哪些可以指定,那write一样的也是名字跟参数啊,这个是咱们的核心要自己写的部分,那还有一个叫什么setting。Setting里面主要有两种东西,一个叫速率,还记得咱们最早介绍对塔差的时候,我说过咱们提到了它可以有一个什么流控啊,就流量控制呗,说白了就限速呗,对吧,那你看他官方模板给了一个什么channel。Channel就是咱们前面介绍提到的并发,还记得那道题吗?我有100个task,我设置为并发20,那在哪设呢?就在这里设并发设为20。对吧,这个就是并发。
05:02
这就是一个并发会使用一个channel嘛,对吧,那其实他这边还可以指定什么呢?呃,可以指定一个bit。BAT是什么意思啊,我从呃数据量的角度来限制啊,它限制是每秒钟啊,每秒钟比如说你填个100,那就是限制你每秒钟最高只能达到100字节啊,这是从呃流量来控,呃数据量来控制,还有一种叫record。也就是说这个speed下面了数据控制,还有一个叫record record是什么数据量,也就是什么调速。它同样也是每秒钟,那比如说我将record设为100,那就限制了我每秒钟最高只能同步100条数据,大家注意,这个是对整个作业而言的啊,整个教本而言的。好了,那么这个是它的一些流速控制,还有一些错误控制啊也可以。
06:05
那为什么它不显示啊,因为它有默认值,它会帮你设进去啊,因为我们执行的时候,它是不是会把我们打印当前作业的一个阶层,完整阶层你去看就知道了啊,这个很简单啊,很简单。来,我们把。模板拷过来。啊,其实主要有三块对吧?啊,这边有什么速率啊啊醋绿的。好。这时候你把模板拿到,你要改哪个地方,就这里,还有这里吗?对吧,来我们怎么写呢。Karen。就裂呗。对吧,那列现在没有,我们是不是要自己写,大家注意,这个stream只是用来自己演示的啊,测试用的并不是咱们实际应用场景,所以它这一边写的话是这样写一个一列是一个Jason串,那每一个Jason里面你要有一个什么叫type,呃,Jason注意要用双引号,对吧,它字符串啊,Type要指定它的类型,比如说。
07:12
呃,然后逗号换行。哎,Value也就当前值呗,那比如说我叫。叫什么?张三,好吧。法外狂徒张三就是代表了一列了,如果你要写多个列,怎么逗号啊,你再来啊。因为这个stream是也是用的,所以你写的是什么具体的一个值啊,这种写法仅仅针对于stream啊。也是用的好,那比如说我来一个int类型,我叫他A,呃,18岁对吧。这样子啊,这个逗号要去掉,那这这边我们是不是写了两列,而且是写死的值对吧,因为是测试用的好,那后面这个是什么意思呢?我要产生几条数据。
08:02
你这是不是两列,这属于一条啊,这是一条,那你因为我们是测试用的,我希望可能测一下它的压力,比如说咱们之前跑的是10万对吧,现在我不想弄那么多,我弄个十条啊,十条,那writer同样是一个stream writer,那我们发现他只需要设置两个东西,一个叫什么编码,一个呢打印,这打印就是在控制台要不要显示采呃数据嘛,显示数据我们之前是不显示啊,因为那个官方案例那个是10万条啊,10万条,那我控制台要刷多久啊,所以它默认是给我们制成的force,你可以往上翻一翻,我们刚才跑的那个任务。你看它是什么false,那它的编码就UTF8对吧,咱们正常应该也都是UTF8好拷过来就行了,那后面呢,你看channel的设置。那这边我们说的是并发对吧,我们先给个一,那大家注意啊,这边由于是string,比如说你这边给个二,那它会打印几条啊,它会打印十乘二等于20条,每一个并发都十条,这是仅针对于他的啊,那如果是咱们的数据库,那就正常了,就跟跟咱们之前理解的一样啊,同时跑几个啊。
09:21
来,我们现在就写完了,同学们。是不是很简单?Reader writer,还有速率控制,搞一下就可以了,好,那我们写的话应该写到哪里呢?我们是不是应该放到job的这个里边啊,咱们把一些作业的Jason文件都放在job的文件夹里啊,那你比如说我叫string to string,点好名字你自己起嘛,好因为你启动的时候要指定这个Jason文件啊,好,我把它粘过来,那有的同学可能会,呃,有想法是什么呢?那如果我有个地方写错了呢?
10:01
哎,比如说我这个逗号少了,是不是格式不对啊,对吧,甚至我这个卡我加了一个S。那这样怎么办?你放心,你要是他第一执行第一步会先检查Jason对不对,如果不对,他会直接报错,不会让你跑起来的啊。呃,举个例子吧,就比如说我把这个逗号去掉。这里是不是少个逗号啊?那肯定是不对的,来,我们试一下。Be data叉点BY,然后呢,指定JA省文件job,呃,String to string好回车,你看。还是中文的,用data差智能分析该任务最可能的错误原因是什么?不支持的current类型int。那其实一定是int不支持嘛,可能就是你写错了。对吧,那我们把它改回来。
11:04
好,加上一个逗号,说明还是不够智能的,好回车,我们把逗号加上了,再执行一遍。那这个确实是什么啊,类型问题对吧,类型问题。那我这边呃,它是不支持int,这个咱们可以去看文档啊,它支持什么类型,那这边我就给个是最好了哦,为什么我这边是不是用的字符串呢。对吧,刚才我写的int,但下面用的字符串肯定不行啊。那简单一点,咱们都是这嘛,好回车。嗯。那么大家看看。啊,我们从这开始执行的,对吧。从这来,你看这是不是打印了十条啊,两列。对吧,你数一下嘛,二四。
12:00
六八十啊,那后面进行统计了,大家注意这个统计信息很关键啊,那首先执行耗时多久,平均速率啊,平均每秒条数总的几条,失败几条,这个就很重要啊,因为咱们采集很。肯定要知道失败了多少条啊,这个很重要,好。那我们可以再来写一写什么呢?我再来改一改,我把并发改一下啊,我改成二。那么它就应该会打印出20条,为什么呢?因为我们说呃,这个是最是它特殊的地方,它的并发会乘以这个数量,就是说单个并发它是这么多条,它是这个意思啊。好在执行,那么大家能明显的看到是数量就多了,应该是有什么20条。
13:01
而且大家仔细看日志,要学会看日志啊,呃。除了最终的这个之外,其实很多日志细节咱们可以去看的。它的执行过程。他有一个准备。对吧,还有一个什么作业容器启动。还有设置一个两个channel。还还会做什么事,切分是不是切分成多个task,切分成两个task啊,它是切着两个,然后呢开始调度。然后开始什么?任务组对吧。而且你看他打会打印出每一个任务组的执行情况啊,比如说这个。任务组零,然后里面的task ID是零对吧,正在启动任务组零,任务ID正在启动啊,因为咱们只有一个任务组啊。
14:02
那完事之后他会做什么?Post就执行完毕之后的一些工作,其实就是一些统计嘛,啊,你看这里是不是有速率对吧,还有最终的汇总,这是整体的日志,大家大概知道怎么看啊,那这中间呢,还有一个东西啊呃。现在没有那个错误率的配置啊,这个就是大概的一个配置啊。
我来说两句