[Aliyun] 实时数仓Hologres Demo01实时计算实时写入数据至Hologres
背景
在实时数据业务场景中,最常见的链路是将实时采集的数据,通过实时计算初步清洗,实时写入数据至数据库,再对接BI工具实现数据的可视化分析。数据处理流程如下图所示。
整个业务链路中,要求数据库提供高性能的计算服务,存储海量数据,同时对接多种BI分析工具。单一的数据库很难实现以上所有功能,您必须借助其他数据库的相关能力完成业务流程。
在导入导出数据时会产生冗余存储,浪费存储资源。同时需要维护多套系统,给开发及运维增加了一定难度。
概述
为解决实时场景的业务痛点,Hologres提供了实时数据API接口。业务数据及日志数据可以直接调用实时数据API接口,实时写入数据,再由Hologres提供高性能的计算服务和海量数据的存储服务。数据处理流程如下图所示。
整个业务链路中,您无需导入导出数据,写入的数据统一存储在Hologres中,无冗余存储,节省计算及存储资源。一套系统就能满足您的多种需求,节省了开发和运维的成本。
Blink实时写入数据:
请确保开通的实时计算与Hologres地域一致,以免连接失败。(不是跨Region的服务) Blink 3.6之前的版本未内置Hologres Connector(注意版本),实时写入数据至Hologres需要引用JAR文件,您可以提交工单或通过Hologres交流群(钉钉群号:32314975)获取。 当Hologres中接收数据的表已设置主键,默认按照主键更新实时写入的数据。(按照PK的update time写入) 如果使用批处理方式导入数据,则需要设置BatchSize并使用HoloHub的Endpoint。
使用blink-3.4.4(默认的)版本~
操作步骤
本次案例演示如何在实时计算里随机生成随机数,并在交互式分析中实时查询数据。(本次演示的所有内容大家都可以参考文档:实时数据实时写入查询)
使用平台:实时计算平台、HoloStudio
注意事项:本案例侧重于操作步骤的演示,数据为随机生成的数据,实际业务请根据实际场景数据来做处理)
1.交互式分析建表
登录HoloStudio,并创建一张接收数据的内部表,示例建表语句如下:
create table test(a int, b text, c text, d float8, e int8);
2.实时计算准备实时作业
登录实时计算平台,新建作业开发,并填写作业。在作业中主要是建立实时计算与交互式分析的连接,并导入数据。示例SQL如下:
//模拟消息队列随机生成数据
create table randomSource (a int, b VARCHAR , c VARCHAR , d DOUBLE, e BIGINT) with (type = ‘random‘);
//建立实时计算与交互式分析的连接表信息,下面的连接串信息为必填内容
create table blink_test_demo ( a INT , b VARCHAR , c VARCHAR , d DOUBLE, e BIGINT, PRIMARY KEY (a) ) with ( type = ‘custom‘, tableFactoryClass = ‘com.alibaba.blink.connectors.hologres.HologresTableFactory‘, `endpoint` = ‘交互式分析实例VPC网络地址:交互式分析实例VPC网络端口‘, `userName` = ‘当前账号的Access ID‘, `password` = ‘当前账号的Access Key‘, `dbName` = ‘要连接的交互式分析数据库名‘, `tableName` = ‘交互式分析中用于接收数据的表‘ );
//将数据导入至连接表中
insert into blink_test_demo select a,b,c,d,e from randomSource;
进行语法检查时会出错:这是因为缺少一个hologres的连接jar包的引用,下面开始导入jar包(blink-connector-hologres-07-demo.jar)
作业填写完成后,在实时计算左侧菜单栏处选择资源引用,并引用资源包(资源包:http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/170591/cn_zh/1591698479126/blink-connector-hologres-07-demo%281%29.jar?spm=a2c4g.11186623.2.23.ff644333ZjOaJX&file=blink-connector-hologres-07-demo%281%29.jar)
然后保存,再进行一次语法检查:
下一步开始上线实时job。选择上线:
启动作业:将作业提交到生产环境运行。单击左上角运维,手工启动作业。(作业启动并有输出信息需要1-2分钟,请耐心等待)
交互式分析实时读取数据
实时计算有了输出数据之后,可以前往HoloStudio进行数据实时查询
可以看到TPS是2 Blocks/s,你也可以调整bathSize;
随便执行两个SQL测试一下:
SELECT * FROM test; SELECT COUNT (*) FROM test;
Done!