本文再介绍一个案例,结合目前比较流行的组合:doris+paimon+flink+minio的组合,实现使用flink把数据写入paimon中,数据真实存储在minio中,再使用doris进行读取。下面直接演示。具体的版本为:
序号 | 组件 | 版本 |
1 | doris | 2.1.7 |
2 | flink | 1.20 |
3 | minio | RELEASE.2024-10-02T17-50-41Z |
4 | paimon | 0.9.0 |
一、部署flink
关于flink的部署的话,直接下来,启动单机即可,但是启动之前记得需要在maven仓库中下载如下三个包:
1、paimon-flink-1.20-1.0-20241213.002828-75.jar 2、paimon-flink-common-0.9.0.jar 3、paimon-s3-0.9.0.jar
flink lib下面所有包的列表如下:
把包放到flink/lib目录下后直接启动flink即可。
2、部署minio
minio现在在各大公司都是作为自建文件存储的主流方案,所以这里直接在服务器上启动一个minio即可,详见:《docker部署minio》。
3、部署doris
部署doris的话可以参考doris的官网部署,也可参考:《doris学习系列》。
4、使用flink进行paimon数据的插入
这里暂时不使用dinky进行演示,所以直接使用flink-sql客户端即可,进入到${flink_home}/bin目录下,执行./sql-client.sh
就会进入到flink sql的客户端,接下来执行如下的语句:
#使用flink创建一个paimon 的catalog CREATE CATALOG `paimon` WITH ( 'type' = 'paimon', 'warehouse' = 's3://paimon/', 's3.endpoint' = 'http://192.168.1.249:39000', 's3.access-key' = 'sXxrJShvYTI2DTAC0T0Y', 's3.secret-key' = 'lro6lQb8WAUb5b2GNa6OPz9VHCv5W28azSGqTcC5', 's3.region' = 'us-east-1' ); #切换使用paimon的catalog use CATALOG paimon; #创建test数据库 create database if not exists test; #使用test数据库 use test; #创建学生表,存储位置指定到minio的某个路径下 CREATE TABLE if not exists student ( `id` int not null, `name` varchar(25), `age` int, `sex` int, PRIMARY KEY (id) NOT ENFORCED ) WITH ( 'deletion-vectors.enabled' = 'true', 'path' = 's3://paimon/test.db/student', 'bucket' = '2' ); #演示插入数据 insert into student values (1, '张三', 15, 1); insert into student values (2, '李四', 16, 2); insert into student values (3, '王五', 17, 1); insert into student values (4, '赵六', 18, 2); insert into student values (5, '田七', 19, 2); insert into student values (6, '王八', 20, 1); insert into student values (7, '赵九', 21, 1); #设置为批模式,默认是流模式,流模式下显示不出来刚才插入的数据,批模式可以显示刚才插入的数据 set 'execution.runtime-mode' = 'batch'; #查询数据 select * from student;
前面的执行图如下:
最后查询结果:
数据被插入进去了,同时使用flink也是可以查出来数据的。
5、使用doris读取paimon的数据
连接到doris的客户端
执行如下的命令:
-- 查看所有的catalogs show catalogs; -- 创建paimon的catalog CREATE CATALOG `paimon` properties ( 'type' = 'paimon', 'warehouse' = 's3://paimon/', 's3.endpoint' = 'http://192.168.1.249:39000', 's3.access_key' = 'sXxrJShvYTI2DTAC0T0Y', 's3.secret_key' = 'lro6lQb8WAUb5b2GNa6OPz9VHCv5W28azSGqTcC5', 's3.region' = 'us-east-1' ); -- 查看paimon的catalogs下面的库 show databases from paimon; -- 查看paimon的catalogs下面的表 show tables from paimon.test; -- 从student表中查询数据 select * from paimon.test.student;
最后的执行结果如下:
可以看到这里直接查询出来的数据。以上就是Doris+paimon+minio+flink实战案例。
备注:
1、flink中需要添加paimon的依赖包,这里直接去maven的仓库下载即可,非常方便。
2、doris中自带集成了s3的依赖和paimon的依赖,所以doris的lib目录不需要额外添加其他的依赖,直接启动即可。
3、flink中创建catalog使用的s3和doris中创建catalog使用的s3在key上有区别,flink是中划线的-,doris是下划线的_,千万要记住这里的区别。
4、写本文的目录主要是记录下,在实际场景中,我们在dinky中开发数据作业的话,不会每次都挨个去查询数据验证,直接使用doris进行数据验证比较方便一点。
还没有评论,来说两句吧...