本文为您介绍在独享Blink中如何创建实时数仓Hologres源表。
使用说明
Hologres源表默认使用批模式读取数据,即对全表数据仅扫描一次。扫描结束,消费即结束,扫描结束后输入的数据将不会被Hologres源表读取。如果您需要使用实时消费Hologres的数据,请参见订阅Hologres Binlog。
使用限制
Hologres支持使用Holo-blink Connector将Hologres表作为源表读取数据并进行维表Join,其使用限制如下:
默认只能读取行存储格式的表数据。如果要读取列存储格式表的数据,需要配置
bulkread='true'
。创建行存储表时,如果该表设置了主键,必须将主键配置为clustering key才能工作。Hologres创建源表的示例语句如下。
begin; create table test(a int primary key, b text, c text[], d float8, e int8); call set_table_property('test', 'orientation', 'row'); call set_table_property('test', 'clustering_key', 'a'); commit;
Blink独享模式3.6以下的版本未支持Hologres数据源,您需要使用Hologres Connector,并引用相关JAR文件,才可以进行作业。请您加入实时数仓Hologres交流群联系对应的技术支持获取JAR文件,并在作业中使用如下DDL语句创建Hologres源表,详情请参见如何获取更多的在线支持?。
DDL定义
Blink独享模式3.6及以上版本支持Hologres数据源,其创建Hologres源表的DDL语句如下所示。
CREATE TABLE holo_dim_table ( pk VARCHAR ,seller_id VARCHAR ,seller_bc_type VARCHAR ,seller_tag VARCHAR ,PRIMARY KEY (pk) ) with ( type = 'hologres', `endpoint` = '<yourEndpoint>', --当前Hologres实例VPC网络的Endpoint。 `username` = '<yourUsername>', --当前阿里云账号的AccessKey ID。 `password` = '<yourPassword>', --当前阿里云账号的AccessKey Secret。 `dbname` = '<yourDbname>', --Hologres的数据库名称。 `tablename` = '<yourTablename>', --Hologres用于接收数据的表名称。 `bulkread`='true' );
With参数的描述如下表所示。
参数 | 描述 | 是否必填 |
type | 数据源类型。 默认为hologres。 | 是 |
dbname | Hologres的数据库名称。 | 是 |
tablename | Hologres用于接收数据的表名称。 | 是 |
username | 当前阿里云账号的AccessKey ID。 您可以登录AccessKey 管理,获取AccessKey ID。 | 是 |
password | 当前阿里云账号的AccessKey Secret。 您可以登录AccessKey 管理,获取AccessKey Secret。 | 是 |
endpoint | Hologres的VPC网络地址。 您可以登录Hologres管控台,进入目标实例的详情页,在网络信息中获取Endpoint。Endpoint需包含端口号,格式为ip:port。 | 是 |
bulkread | 参数取值如下:
说明 如果您需要使用Hologres的列存储表作为源表进行作业,则需要配置该参数为true。 | 是 |
数据类型映射
Blink独享的数据类型与Hologres的数据类型映射,请参见数据类型汇总。
Blink实时消费Hologres Binlog
实时计算Blink 3.7及以上版本,支持Hologres Connector实时消费Binlog,请参见Flink/Blink实时消费Hologres Binlog。