00:00
在实际使用的过程中,我们可能经常要遇到,呃,通过其他的东西来跟Doris做一个集成,比如说我要用Spark来操作读写Doris。还有呢,我想用flink来操作和读写Doris,甚至呢,我想用data叉。呃,来导入数据到Doris,那这些都是我们日常在呃实际使用过程中经常用到的一些框架和工具啊。那甚至还有基于ES的,还有一些odbc的外表,那这些方式呢,我们都会通通的做一个演示,那首先呢,我们准备一张表跟数据啊,回头啊,来读写这张表啊,那字段就很简单啊,Set ID code u PV。然后呢,聚合模型。PV是一个上啊,按照set ID分组啊,没了,就很简单的一张表来。建完之后我们插入几条数据。
01:05
好,那这就完事了,对吧。接下来我们首先准备第一个啊,通过Spark来读写Doris,那准备环境呢,那这边我们以那个代码工程代码的方式给大家简单做一个演示啊,看看怎么写。那首先呢,我这边代码已经准备好了。你先创建一个main工程啊,然后呢,编写破门键的依赖,那导入什么呢?我们挨个看一下。像Spark相关的依赖Spark Spark circle啊,Spark要不要都行啊,我们暂时还没用的。那再往下呢。最主要的是这个依赖。Spark Doris。那么,如果在早。早一阵子,那这个连接器的依赖可能需要自己编译啊,它没有进入到一个中央仓库去,那么目前现在已经有了啊,也就是说不用我们去编译,我们直接导入依赖就可以了,那这个依赖我们看一下,它支持两个系列,第一个是3.1.2的Spark。
02:10
是2.12啊,Spark是三点一系列的啊,基于3.1LA是2.12,那它是兼容,基本上对于你三点叉的Spark都是基本兼容的啊,那你就用这个一呢,那如果你是二系列的Spark,那你可以用一下下面这个一呢,那如果还有其他的需求,那就只能自己去做一个编译了啊。好,那这个依赖导进来啊,那下面就是一些常规的插件啊,SC的一些编译插件啊等等。那这些我也都贴到文档里了啊,这个就是我整个一个破文件啊,大家也可以去瞅一瞅,根据需要,那其次呢。我们先了解一下,按照circle方式。
03:00
Spark circle的方式来读写,那这几个案例都特别简单,我们给大家捋一遍,那首先是创建一个环境,初始化环境。Spark session啊。那因为我是idea直接运行,我直接set master为local星啊,这个就不啰嗦了,那接下来看一下这个语法circle怎么写啊,首先创建的是一个临时的视图。要指定为引擎为。那其次呢,在指定一些配置项。配置像有这几个基本的选项,第一个呢是我们的数据库。名跟表明啊这么一个属性,其次呢,Fe的地址。大家注意这边的端口写的是HTTP的端口啊,HTTP的端口也就是8030,如果你修改了,记得修改成呃对应的HTTP端口,那其次呢,那肯定要有一个用户名跟密码对吧,这都是最基本的配置,那有了之后呢,咱们就可以直接去查了来,比如说我现在查一下。
04:06
好,我把这个注打开,直接带新这一张视图。右键运行。啊,我可能需要重新编译一下先啊,稍等啊,因为修改了代码对吧。啊,我先给它编译一下。好,稍等一下啊。好,那我们运行来看一下效果。
05:01
现在数据查出来了。那你看这边是我们之前插入的数据,我们也可以到这里来查询一下select新from table1。跟这个结果是不是一样的,对吧?一共五条数据,这是通过Spark circle来读取Doris的表,好,那我把它做掉,我切换成写入数据的。那写入呢,也简单,我们用insert into的方式啊,将它进行一个写入啊,那我再写一下Spark circle。相当于说我把这个u name啊改成18个车口。先编译一下。在运行。运行完之后呢,我们可以查这张表,看一下数据就可以了。
06:11
运行完了,运行完了,我们来查一下。是不是这个数据已经成功插入进来了,对吧,从这里就可以看到啊,这是一个Spark circle的方式,那我们还可以通过circle里面的data frame来给大家做一个演示啊,那首先呢,是一个写入数据。啊,我们先看写吧。那你看我在前面先创建了。几条数据把它创建成一个DF对吧?呃,然后呢,这叫Mo data df。之后呢,我对它调用一个right。然后format格式指定为Doris。在之后呢,几个配置项啊,配置项分别是什么呢?库明表明fe地址啊,端口一样写HTTP的端口,用Doris的用户名和密码,那同时我们也可以去指定要写入的字段,对吧,那这边咱们就先注掉全部写入。
07:10
啊,直接做一个save那就可以了,那这边呢,我们准备了几条数据用来做插入,好,那我们直接运行。看一下效果。等他执行完。那么可以看到这中间呢。是这边打印是因为我这里对创建的DF做了一个show啊,可以看到是这三条数据啊,然后呢,往里插往里插,我们直接看Doris的表有没有多出那么几条数据,那从这我们可以看到这几条是不是新插入的对不对。通过DF的方式直接啊。这是通过DF去写,那接下来我们看一个读啊,读的话我把写入的逻辑注释掉,然后呢,将读数据的逻辑打开来,我们看一下它的逻辑啊。
08:13
我先让它编译着啊,先让它编译着,好,那我们来看啊。通过Spark session.read读取,格式指定为Doris。其次又是这几个参数,最基本的一定要库明表明。Fe的地址跟HTTP端口。用户名密码啊,然后呢,我把它售出来啊。就可以了,来,接下来我直行。那么看一下已经执行完毕了,那这边是不是已经展示出来了,只显示五行的原因是什么?只显示。五行,因为我这个瘦的number写的是五啊,那如果我们不写的话,它就不会做一个限制对吧。
09:04
那这样的话,大家也可以再去看一看啊。这是通过DF啊,最关键点在哪里,Format为dori,这个写也好读也好为dori,那关键就在于咱们用了那个connect啊,提供了这种格式。好,这是通过data frame啊,我们去读跟写,那么还有一种方式是RDD。RDD的话,目前只支持一个什么呢。呃。读。啊。现在还只支持读。那我们看一下读取数据啊,很简单啊呃,前面就创面基基本的环境Spark contest,再往下呢,做一个隐私导入啊隐私转换,那么导入了这个类是or RG阿帕奇do Spark啊,然后点下划线就可以了。
10:04
那这个时候我们通过SC就能去调用这个Doris r DD啊,这个也是那个connect给我们提供的啊,提供的好,那进来之后呢,需要这么一个写法,第一个。要指定一个。库明和表明。第二一个。要指定一个其他几个基本参数,第一个呢,HTTP不fe的主机,还有HTTP的端口,还有dollars的用户名跟密码啊,这个根据你实际情况去改啊,然后我将它correct查看一下,那大家可以看到我通过correct去看,所以其实RDD这种更适合什么,将数据读取进来,然后进一步通过RDD的方式对它进行一些处理啊,这样子那我们这里就简单的那看一下。主要是让大家熟悉一个它的特有写法啊。
11:06
啊,这边忘了做一个打印对吧,我们通过for each,然后print。啊,重新执行一下啊,没事编译一下,再执行一下。好运行。那么可以看到结果也是正常的读取和展示出来了,对吧,包括我们前面以前插入了几个数据都有了,全都有啊。那么这几个呢,就是Spark dori k,哎,官方提供了这个。依赖。给我们展示的各种功能,那其实还有一种,但是它是要基于它也可以流失写入啊,是truck的streaming,那利用DF的一个streaming方式可以也可以去写入Doris。
12:10
但是我们目前呢,呃,Start streaming啊,就不去做演示了啊,场景也比较少啊。
我来说两句