00:00
接下来我们了解一个who底自带的流式摄取工具,叫datata streamer,这个也是我们在一开始的时候提到的,搜忽底支持流式的摄取,对吧?那比如说我们可以从卡夫卡这么一种消息队列当中,呃,流式的采集数据进忽底表。那除了卡不卡呢,也可以从分布式的文件系统啊,也也是可以采集过来的,那这一边它自带的这种工具呢,就叫Delta式dreamer,那么它是依赖于Spark来实现的。好,我们具体看一下啊,这个工具呢,是护底的工具模,这个架包所提供的一个类啊,那这个呢,我们也是编译过的。那它有什么特点呢?能够精准一次的从卡不卡采集新数据,对吧?那这个精准一次就很重要了,而且呢,可以比如说从SCO或者have增量拉取,呃,这么一种方式啊,直接对接scope,然后将这个数据直接进入到我们的弧顶啊,而且呢,是可以增量导入的啊,也可以全量导入都可以,那么它支持的数据格式呢,有杰森阿芙罗等等这一些啊,不同的数据来源有不同支持的格式。
01:16
呃,而且它可以管理检查点,可以回滚,可以恢复啊,这也是为什么可以实现精准一次。那而且呢,可以利用我们的分布式文件系统,或者呃,Con卡夫卡当中的这个STEM注册模块啊去。它用用到它里面的阿芙罗文件啊,就是相当于说定义的拿到一个表的STEM信息啊,结构信息嘛,啊,就这个意思,而且可以自定义转换啊等等,总而言之言,总之它是干嘛呢,导入工具啊。那我们首先来看一下吧,呃,如果我们要只呃查看一下这个命令啊,其实就指定Spark submit,然后呢,杠杠class指定这个工具类的全类名,另外呢,你再跟上这个架包的路径啊,这就OK了,然后杠杠help,我们可以查看一下命令啊,这个命令的比较,呃,我个人感觉还是呃参数列表太多了啊呃,你要熟悉一下啊,那这个包我带大家来看一下吧。
02:25
呃,进入到我们的OPTSO,呃,0.12,那么在这里呢,咱们不是说,呃,编译好的包都在哪呢?是不是都在这个packaging。诶,好在这个地方对吧,好在这当中有一个模块叫U。就是这里。啊,我们那个工具的就在这个包里面,好,那我们进来。呃,直接进到target,那么我们可以看到这个有我们编译好的这么一个包啊,那么文档里面的路径是直接写的这个路径啊,我们就直接来看呗,啊直接把你看我这个路径是我的啊,你们如果路径不一样,自己稍微改一下啊,指定到这个价包的路径就可以了,好了,那么把命令拷贝过来提交。
03:20
那你看这个参数列表特别特别多呀啊,这个就是它给我们提供了一个特殊的工具类啊,那我简单说说几个必须要写的。一些还有一些主要的参数就好了,那其他的你像像这个东西就是关于他的checkpoint相关的,那他有相关的介绍啊,如果你有需要再去看啊,那还有什么base文件的格式啊,还有引导程序啊。对吧,还有引导程序的覆盖方式啊,Check个po啊啊,还有这个class的调度的一个一些东西啊,什么权重啊,这个那个这个是比较精细的调整了叭,较精细的调整,你知道有这个参数留个印象回头啊,如果涉及到说要呃调一些比较细的东西,你再来看这个啊,那你再往下翻。
04:13
嗯。错误的时候怎么办,对吧,然后这些我不看了,还有。看几个重要的。诶,比如说这个吧,啊,要不要compassion对吧?啊,是否是将compassion关闭,默认是false,也就是说默认是开的啊,另外呢,接下来这几个参数是比较常用的,我说一下啊,那这个enable have这个是什么意思呢?是同步have就就是这个意思啊,那比如说咱们这个从卡不卡读取数据,通过这个德尔塔STEM来采集,那我们正常是不是写入一个呼地表对吧?那么如果你开启了hi同步,相当于说他在写护底的同时也会写一份到哪里呢?到have表当中。
05:04
那汉的表明,还有表结构会跟湖底的保持一致。啊,保持一致,当然这个时候这张表是属于hi的一张表啊,好,那默认的是不开启的,看你有没有这个需求了啊,也就是双,这个就我们经常说的什么双写,那么关于同步have,咱们在后面章节再单独介绍,那在这里就先不展开啊好,这个是是否同步啊。好。这是。重复的数据要怎么去处理啊?然后呢,这个是whodi config,也就是说Di的配置项有很多对吧?啊,你可以单独对某一个配置项进行修改啊。那那但是我一般不会用这种方式啊,因为你配置项太多,你一个一个去指定不方便,所以它来再往下看,往下拉一点点啊。呃,它没显示啊,但是这里有说啊,他说更建议用什么杠杠properties,也就是说你指定一个配置文件,将配置项都指定在文件当中就好了。
06:10
对吧,你就不要这样,像这样一个一个参数去指定了,你直接放到配置文件,然后指定配置文件,就这种方式更优雅啊,命令看起来更简洁,行这个这个后面一会也能看到,再下面一点啊,那其他的这个是什么,这个包呢啊,这个是控制并发的一些事儿,比如说最大的等挂起的这个有可以有多少啊,最大挂起的compassion任务可以有多少啊。好,这个一个重试啊,这个是一个间隔啊,最小同步间隔op,诶这个需要好好说一下,Op是什么呢?也就是说我导入的行为写入模式要用什么,大家记得前面在第三章核心概念我们讲过,Whodi的写有三种,第一种是upsett,第二种insert,第三种呢就是B,呃,Insert对吧?那这个是默认的啊,默认的一个方式啊,没有就插入啊,有就更新,根据那个record key和索引,对吧,银色的就啥也不管,就直接往里插包,银色的一般就是大量的大批量的数据啊,并且会排序并且去插入,那我们说一般你对历史数据的初始化要第一次同步到户地表,那建议用这种方式,对吧?啊,效率更高。
07:25
呃,这个时候这个如果你是第一次同步,那你就op指定为这个就好了,那如果不是第一次啊,不是历史数据这么大量同步的话,那你就其实用UPS或者用insert都可以看你了啊,一般是用UPS。好,默认就是upset啊,这个选项是比较重要的啊,是大家要要去配的,好诶我按了一下啊,再往上翻回刚才那个地方。嗯。啊,在在到了啊,刚才看到op了对吧,然后paylo class是看你要不要指定自己的paylo了啊,也就是说这个跟什么相关的,跟我们指定那个can buy,呃,那个行为有关系啊,咱们都用默认的就行了,目前啊,所以这个不用去指定啊,啊这是一个什么终止策略啊,来看这个,这个不就说了护底配置项嘛啊,你不要一个一个去指定,你指定一个配置文件就OK了啊好,再往下。
08:25
呃,这个不重要不,呃,也就是说都用默认就行了,这几个。这是一个什么引导程序啊,可以走引导程序啊。来,那有两个必须写的,而且不太好理解的,一个是他,一个是他,这个可能大家经常就是也不知道他什么意思,反正就是看别的怎么写你就怎么写,其实不不应该这样子啊,这个是一个STEM provide的类,什么意思呢?也就是说我你现在有几条数据叫ID,你有一个吧。啊,有个Jason。
09:03
啊,张三,这是不是卡夫卡的一条数据对吧?那他读的时候怎么识别成一张表的这种结构对吧?或者说你要告诉他的结构信息是什么,就类类似于这条数据怎么映射成一张表结构,对吧?你是不是应该告诉我,诶,我有个字段叫ID,比如说是int类型,比如说你是不是还要告诉我有一个字段应该叫name,它是STEM类型啊,就这个意思啊,也就是说我用什么方式来得到我的STEM信息?对吧,那它支持好几种啊,那么大家可以看有基于文件的,也就是说你定义一个阿弗罗文件。阿文件,呃,在里面定义这种,我刚才讲的这种是基本信息,另外呢,你也你如果用的是can卡夫卡啊,这个不是阿帕奇卡夫卡,这不是一回事啊,这个是领音里面原先的卡夫卡啊。
10:00
那几个开发人员出来,他们创业成立的一个商业公司,然后出了一款产品叫con卡不卡,也就是说跟我们理解的阿帕奇卡不卡有点区别,它有额外的一些功能,包括什么,就是STEM注册等等一些东西啊,它可以直接,那我们迪呢就可以用啊。包括官网的案例,它也是用的这个,那咱们用不上,所以不会不会用它,一会我再再来看官网啊,总而言之,这个东西就类似于定义,诶我原表的STEM什么样啊,结构是什么样,我忽底目标表的结构又是什么样啊,这个就是它的作用,好,那这个source class一般呢,咱们有。呃,你可以理解为数据的格式吧,数据来源的格式,你是Jason还是阿芙罗?你你看这边的有一个选项对吧?它有什么呢?Jason DFS source什么意思?表示我的来源是分布式文件系统,而且存储的数据格式是Jason的这种风格啊,这是默认的,那如果你看还支持什么?
11:06
还有阿芙罗DFSS,也就是什么呢?在分布式文件系统是数据源,那里面的数据是阿芙罗的形式啊,那还有什么呢?数据源是卡不卡,是杰森形式,数据源卡不卡阿芙罗形式。啊,对吧,还有这个help增量拉取的这种形式。啊,它支持这么多种啊,那所以这两个东西就得根据你的实际场景来配了啊,所以并不是说别人怎么写你怎么拷贝就完事了,那你是跑不通的啊好吧,这两个是比较重要的。再往下呢,呃,就是一些限速啊,还有排序字段呢,你可以指定数据源按哪些字段排序啊,这样效率更高嘛,好,那下面这些就是Spark就是呃,都可以啊。你logo的话或者雅安也可以嘛,是不是啊。啊,然后我咱们看看其他比较重要了,你看标星号的是必须写的星号,这几个是必须的,来第一个table type,很简单,你是Co还是Mo,指定一下迪回头的这一个表类型,另外一个target base bus pass,忽迪表的路径。
12:18
这个是忽底表路径啊,你看护底表的路径,那这里还有一个地方要注意,这个叫target table。那其实就是什么目标表的名称嘛,啊,就表明这个也是必须写的啊。好,还有transform transformer,也就是说采集的过程当中,你还可以做一些清洗转换操作啊,这个时候你需要有一个定义,一个class啊。好吧,这是一些说明,另外咱们单独来看看刚才说到的这个ski my provider跟source,我告诉你怎么去看啊,刚才简单讲的对吧?看文档在这里我单独放了一个链接来拷贝好粘过来啊,这个是一个官网的页面,那整个页面都是介绍,这基本都介绍这个德尔塔是dreamer对吧?那如果你光看前面这里啊看的呃。
13:12
这个就是命令说明,那下面这个案例你一看啊,你直接拷贝过来用你是用不了的,为什么他这个案例是基于咱们这个conluent卡普卡来的,这个跟我我刚才说了,这个跟阿帕提卡普卡还不太一样啊,啊,你要是不了解,我简单给你看一下啊呃,随便点一篇吧,应该大家都会介绍什么是K卡不卡,呃,就是普卡的创始人,还有几个人离开了领英啊,因为我们知道阿阿帕奇卡普卡是领英,呃,那个开源的嘛,是吧?啊创立了con公司,提供卡普卡企业级流处理的解决方案。发布了con卡不卡。
14:00
啊,分为开源版,企业版和收费版,然后它的特性有什么,你看什么confluent stemme registry啊,有一个什么STEM注册模块啊等等等等啊,就比开源的卡不卡功能会多一点啊。呃,那咱们如果你不用这个,你这个案例你就没法直接拿来用了,你看他用了这个什么provider这个类是什么呢?是什么STEM registry这个就是那个卡不卡提供的啊。所以你这个没法直接用啊,那你放心啊,我告诉你怎么看看右边菜单栏。这里除了这个选项之外,还有什么JDBC的STEM,还有什么呢?基于文件的stemmer,还有基于have的STEM。对吧。那还有一个基于那个鞋处理器的,那在这里几个里面让你来选,比较常用,比较好用的应该是这两个吧,一个是JDBC的,一个是定义文件,通过文件来定义啊。这种呢,就是谁都能用啊,那我们现在就以fire base STEM为例啊。
15:06
那如果用这种fire base stemmer,那需要指定两个参数,就是文件嘛,你既然是说基于文件,那你要告诉我文件在哪里,所以这边一个配置像是数据源的STEM文件,你要指定,Target给的STEM文件你也要指定。啊,先理解这个事儿,你才能理解一会我们要做的操作啊,基于文件了,你就得定义source跟target的STEM文件啊,那这里也有案例说该怎么写,其实就是定义一个点avc。就是阿罗的一个一个啊,你看一下。就是这样子,就这么一个Jason配置,你看基本都是什么?诶,类型为record数据,呃,名字叫什么?然后接下来是字段的STEM定义,你看字段名是什么,字段类型是什么,字段名是什么,字段类型是什么?好吧,这个应该大家都看得懂,我就简单说一下啊好,那hi的有have的配置,你就参照这个来啊,它需要什么配置,你都给它配置好就OK了。那接下来我们看一下S,你看一下S支持什么分布式文件系统,大家注意不是本地文件系统,是分布式的,就类似于HDFS这种啊,那还有支持什么卡夫卡S3JD bc circle。
16:26
呃,那卡夫卡可比较常用,我们看一个卡夫卡就好,那卡夫卡他说了,他我们能够从卡夫卡读取数据,有这么两种格式,第一种阿芙罗,第二种杰森啊,所以我回头会用什么杰森?好,这个就是关于命令还有几个注意的地方啊,不太好理解,不太好写的地方啊,告诉大家怎么去找,怎么去考虑啊,这个你在网上找资料都是直接一个命令一贴,啥也不说就就就给你了,你可能看不明白了啊,那现在这么一说,相信大家,嗯,稍微清晰一点啊。
我来说两句