本文为您介绍如何创建交互式分析Hologres结果表,以及创建结果表时使用的WITH参数、流式语义和类型映射。

交互式分析Hologres概述

交互式分析Hologres兼容PostgreSQL协议,与大数据生态紧密连接,支持高并发、低延时实时分析处理PB级数据,让您轻松使用现有BI(Business Intelligence)工具对数据进行多维分析和业务探索。
注意
  • Hologres新源表在Blink 3.6.0版本正式上线。如果您的Blink为3.6.0以下的版本,您可以提交工单获取需要的JAR文件,安装使用。
  • 建议您使用Hologres 0.7及以上版本。

流式语义

流式语义用于向Hologres持续写入数据,您无需设置检查点。根据Hologres Sink的配置和Hologres表的属性,流式语义分为Exactly-once和At-least-once语义。

两种语义的使用场景如下:
  • 如果Hologres表已经设置主键,Hologres Sink通过幂等性使用Exactly-once语义。当同主键数据出现多次时,Hologres Sink支持以下流式语义:
    • insertorignore:默认语义,保留首次出现的数据,忽略后续所有数据。
    • insertorreplace:使用后续出现的数据整行替换已有数据。
    • insertorupdate:使用后续出现的数据选择性替换已有数据。
  • 其它情况需要使用At-least-once语义。
注意
  • 默认情况下Hologres Sink只能向一张表导入数据。如果导入数据至分区表的父表,即使导入成功,也会查询数据失败。
  • 您可以设置参数partitionRoutertrue,开启自动路由数据至对应分区表的功能。
  • tablename参数需要填写父表的表名。
  • Blink Connector不会自动创建分区表,请您提前手动创建需要导入数据的分区表,否则会导入失败。

语法示例

实时计算支持使用Hologres作为结果表,代码示例如下。
create table mysource(
  name varchar,
  age BIGINT,
  birthday BIGINT
) with (
  type='hologres',
  dbname='...',
  tablename='...',
  username='...',
  password='...',
  endpoint='...',
  field_delimiter='...' # optional
);

WITH参数

参数 描述 是否必选 示例值
type 源表类型 hologres
dbname 读取的数据库
tablename 读取的表
username 用户名
password 密码
endpoint hologres端点 <ip>:<port>
field_delimiter 导出数据时,不同行之间使用的分隔符。
注意 不能在数据中插入分隔符,且需要与bulkload语义一同使用。
默认值为"\u0002"
mutatetype 流式写入语义 默认值为insertorignore
partitionrouter 分区表写入 默认值为false
ignoredelete 是否忽略撤回消息 默认值为false
说明 仅在使用流式语义时生效。

类型映射

Hologres BLINK
int INT
int[] ARRAY<INT>
bigint BIGINT
bigint[] ARRAY<BIGINT>
real FLOAT
real[] ARRAY<FLOAT>
double precision DOUBLE
double precision[] ARRAY<DOUBLE>
boolean BOOLEAN
boolean[] ARRAY<BOOLEAN>
text VARCHAR
text[] ARRAY<VARCHAR>
numeric DECIMAL
date DATE
timestamp with timezone TIMESTAMP

属性字段