00:00
那接下来介绍一个特别好用的功能啊,也就是将我们的表的原数据给它持久化下来,不至于说我们每次退出搜Q客户端再进来,那表要重新建,很废啊。那么从0.12版本开始啊,那么忽底支持通过catalog来管理flink创建的表,那什么叫catalog呢?你翻译起来就是一个目录,那其实大家可以怎么简单怎么理解,我我画一个关系图啊,首先这也是一个catalog,在cat catalog当中会管理什么呢?管理的意思是database,也就数据库。啊,就是库名啊,哪一个库,那在库里边,又库里面又有什么呢?有table啊,所以我们传统呢都知道啊,先use库名,再去受tables,能看到这个库下面的表对吧?啊,那么在这之上的一层抽象就叫做catalog啊,是由他来管理这些信息的啊,这些表啊库啊的信息,那这个就是所谓的catalog,那他提供了户籍catalog啊,0.12开始支持啊。
01:05
那么这样可以避免重复的建表操作,用起来就很舒服了。它支持两种方式,第一种呢,是基于文件系统,也就是这个catalog的原数据放在分布式的文件系统,比如说HDFS啊,它会从这里去加载。但第二种呢,可以基于hi,而且MS就是hi me store啊,这个就是hi的Meta store,那我们知道hi的原数据它默认是在德比,那比如说我们经常改成MYSQ,对不对啊,Have表的原数据都在MYSQL里面,那么我们通过flink创建的互Di表原数据也可以存到这里面,它是跟这个HMS对接,然后由他来存进去。那这样的话也是达到了一个原数据持久化的目的,并且呢,这种方式还能跟氦服打通啊,可以未来你要做服务仓一体啊,就是hi跟护体打通,那这种方式很舒服啊,那hi的话咱们留到最后一张来介绍,那现在我们就是一会儿演示一下DFS的方式啊,怎么来用好那先介绍一下可用的参数,这其实就是一个flink circle语法啊,Flink circle的语法,那么看一下第一个叫catalog pass啊,也就这个东西,那它就是默认的catalog的跟路径,用作表路径的自动推导啊,默认的表路径是什么?Cat log pass,然后拼接上DB name。
02:36
就库名在拼接上表明啊,这这个就是它的路径啊,默认值是没有的,这个是必须设的啊,那还有呢,我们可以指定在这个catalog下面默认的数据库,咱们用哪一个,你不指定默认就是一个叫做default的一个库啊,另外呢,如果你是基于HMS的,那要指定hi的配置文件,就是hi杠。
03:00
只在HMS模式下生效啊。这样他呢才能知道呢,原数据的地址啊,那再往下呢是模式,模式就区分这两种,第一个是呃,默认值是DFS,也可以是HMS,那还有就是外部表,就是创建hi外部表,这个是也是跟hi呃结合用的时候才有的,那么就用这个,那接下来我们用DFS的方式来试一下啊,那么。我们其实要做的就是create一个catalog对吧?啊并且呢,使用它,那你不想每次进circle客户端都执行一下这个create catalog的话,那有一个很好的方式就是什么呢?Circle狗客户端支持一个读取一个初始化的SQ文件啊,你你你把这个语句放到这里呢,你就不用每次都去再执行一遍了,这是一个初始化啊初始化。那从应该是从一级flink一级开始就变成这样子了,以前搜索客户端有个配置文件的啊,现在那个配置文件被删掉了,现在用的都是这种搜Q初始化的方式啊,那我们先来创建一下啊,我把这个拷贝where I'm com啊,名字随便起了啊,我叫circleq客户端in need.circle名字没有要求啊,那我们看一下啊,那我指定的路径是HDFS的天P呼d catalog没毛病吧,类型是DFS。另外呢,呃,Use一下catalog,我们创建的这个catalog,为啥呢?因为flink客,呃,它自己默认有一个是deforult catalog,这个就是我们一直在用的,它是基于内存的,也就是你一退出它就没了呀,它不吃就花啊,所以我们每次进去还要再use一下这个catalog,那你就把它写在这儿就好了嘛,好,那接下来还有一个问题,就是这个路径啊,我们需要手动。
04:53
创建一下。这个catalog路径必须存在啊,那我们现在没有的话就make Di一下。
05:01
哎,少了一个梗。好了,那这就完事了,接下来怎么用呢?呃,我们只需要正常的搜狗客户端命令,再加上一个杠I指定到创建好的这个搜狗文件就可以了啊,看你放在哪,叫什么名字,你把它对应起来啊,那我就是这个。那你看show tables。你看,呃,Data default不存在啊,现在还什么都没有了啊,我们连库都没有啊,它都没创建啊,为什么呢?来我们看一下啊,我刷新在tmp下面有个蝴迪catalog里面空空如也,啥也没有啊,连库的名称都啊,那个路径都没有啊,无所谓啊啊一会我们建表的时候让他自己创建,那接下来我们看下show catalogs,那你看这个是默认的基于内存的,这个是我们创建的,对吧?好,那么来create data default。
06:12
嗯。嗯,应该是关键词了。对吧,So data basis有一个default库了吧,啊,我刷一下看会不会创建路径,这是不是创建出来了,好,再往下呢,咱们来建表,哎,我们先use一下吧,Use defat。哎呀,完了,这不会每次都这样吧?又是放行。那么。接下来咱们来见表啊,就建这个表。这键的还是之前的一个SS一个TR对吧?啊路径要对起来啊,路径要对起来。哎,我想试一下,如果把我我把这个库删了会怎么样,他为什么要加反引号。
07:08
好吧,不能删啊,那就加就加吧,或者你建一个不叫default库也行啊,你自己建个其他库,嗯,缺少组件对吧,那我就加个组件呗。嗯。是谁要加组件,我看一下这张表以前不用的呀啊。啊,这个要加主线行,那我找一个加一下primary key。
08:02
UID。好,再见一下。啊,那就受tables现在ST是有的吧,啊,那同样的,我估计下面这张表也要报错,没有主见啊,试一下对吧?啊那就那我们也一起加一下。OK,那接下来我们看一下啊,诶,你发现没有这个default里面是不是多了两个目录出来,对吧?这什么SSTT2都有了,然后进来一看,诶,有这个玩意儿了,那接下来我们试一下插入数据啊,Insert into,呃,T2SELECT,新from source t。
09:00
我让他产生数据啊,看后面能不能看到啊,我们只要看到T2这里有数据生成就可以了。应该看这里,看有没有提交一个银色的。啊,没有。哦,应该是完成了吧。嗯。那这么看来的话,那么就手动来呗啊,没有ST就废了,没什么用啊。来我这个类型,我来一个。那那我们后面就不用建这个ST了,没没什么用啊。名字呢,张三AGE18 TS呢?TS来一个time啊。
10:09
就这么写就行了,这样就是一个type type3,呃,分区呢,拿一个。Eight。好,就这样吧。呃,不是分区啊,爬审字段。我把这个语句拷过来吧,把这改一改。那这个就没有任何用了。瘦子,T,不要了,要你干啥呀,真的是。好执行完了对吧,我们查一下时代的新T2啊。
11:01
啊,你看能够查到一条数据对吧?啊,我也不切那个table了,无所谓了,好,那接下来我们做一个事儿啊,我退出,我退出了这个客户端,然后呢,再用刚才的命令进来。还是受current catalog啊,我们当前使用的是whodi catalog,对吧,接下来受data basis,你看有没有,诶是不是有个default,那接下来我们又是default,好吧,又要加反引号,哎,这个好烦,就不该叫这个名字的啊,回头文档我换成其他名啊,大家用那个名字,然后呢,Show tables,你看我们之前建的ST,之前建的T2都还在啊,这个时候我们来代新from t2。看看数据还能不能查出来,肯定可以啊,你的原数据都在对不对啊,这个就是catalog给我们带来的便捷之处啊,但是问题就出在于它好像这个。
12:04
这个数据生成器,这个还是有点问题的啊。但是其他正常的表都OK啊,都OK。
我来说两句