Hologres源表

本文为您介绍在独享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

参数取值如下:

  • true:表示可以使用Hologres的列存储表作为源表。

  • false:表示只能使用Hologres的行存储表作为源表。

说明

如果您需要使用Hologres的列存储表作为源表进行作业,则需要配置该参数为true

数据类型映射

Blink独享的数据类型与Hologres的数据类型映射,请参见数据类型汇总

Blink实时消费Hologres Binlog

实时计算Blink 3.7及以上版本,支持Hologres Connector实时消费Binlog,请参见Flink/Blink实时消费Hologres Binlog