本小节将会为您介绍在Hologres中通过调用实时数据API往分区父表写数据。

背景

Hologres与大数据生态无缝打通,支持离线大数据加速查询,也支持实时数据实时写入。在实时数仓场景上,最常用的链路是将实时采集的数据经过实时计算(Blink)做初步过滤,再写入Hologres做实时查询。但当前Hologres不支持将数据直接写入分区父表中,只支持将数据写入对应的分区子表中。在实际业务场景中,若是分区数过多,需要每个分区一一对应写入数据比较繁琐,且容易出错,不利于业务开展。

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

正式商业化版本的Hologres支持通过调用实时数据API接口直接将数据写入分区父表中,对应的分区数据将会自动路由到分区子表,您可以像往普通表写入数据一样写入至分区表,关于实时数据API详见实时数据API概述

说明 该功能只适用于Hologres商业化版本实例,若您的实例还未升级到商业化版本,请尽快提工单预约升级。

前提条件

  1. 开通Hologres并连接开发工具,详见开始使用
  2. 开通实时计算(Blink),详见开通服务和创建项目

操作步骤

实时计算(Blink)通过实时数据API将数据实时写入分区父表的操作步骤如下:

  1. Hologres建分区表

    在Hologres中创建一张分区表,并创建对应的分区子表用于接收实时写入的数据,示例如下:

    //创建分区父表 test_message,和对应的分区子表  drop table if exists test_message;  begin; create table test_message (  "bizdate" text NOT NULL,  "tag" text NOT NULL,  "id" int4 NOT NULL,  "title" text NOT NULL,  "body" text, PRIMARY KEY (bizdate,tag,id) ) PARTITION BY LIST (bizdate); commit;  create table test_message_${bizdate} partition of test_message for values in ('${bizdate}'); create table test_message_${bizdate} partition of test_message for values in ('${bizdate}'); commit;
  2. 实时计算创建作业

    实时计算创建作业,通过调用实时数据API接口,将数据实时写入进Hologres。操作步骤如下:

    1. 新建作业

      登录实时计算控制台,并在实时计算页面新建作业,示例作业如下:

      create table test_message_src(   tag VARCHAR,   id INTEGER,   title VARCHAR,   body VARCHAR ) with (   type = 'random',   `interval` = '10',   `count` = '100' );  create table test_message_sink (   bizdate VARCHAR,   tag VARCHAR,   id INTEGER,   title VARCHAR,   body VARCHAR ) with (   type = 'hologres',   `endpoint` = '$ip:$port',--Hologres的vpc网络地址以及端口号   `username` = '当前交互式分析账号的Access ID',   `password` = '当前交互式分析账号的Access Key',   `dbName` = '当前交互式分析的数据库名',   `tableName` = 'blink_test'--当前交互式分析接受数据的表名 );  insert into test_message_sink select '20200326', * from test_message_src; insert into test_message_sink select '20200327', * from test_message_src;
      说明 实时数据API功能开启后,可以在Hologres中执行以下命令来获取实时数据API的endpoint:

      show hg_datahub_endpoints;

      使用实时数据API写入分区父表_实时计算_大数据_数据接入_交互式分析Hologres

    2. 上线作业

      作业填写完成之后,单击编辑框的语法检查,若显示成功,则表明语法无问题。随后单击保存将作业保存,然后单击上线,将作业提交到生产环境。并根据业务情况填写作业上线配置。

      使用实时数据API写入分区父表_实时计算_大数据_数据接入_交互式分析Hologres

    3. 启动作业

      作业提交到生产环境后,需要手动启动才能开启作业。在页面上方菜单栏单击运维,跳转进入运维界面,找到需要启动的作业,单击右上角启动即可。最终作业情况展示如下:

      使用实时数据API写入分区父表_实时计算_大数据_数据接入_交互式分析Hologres

  3. Hologres实时查询

    在Hologres中,直接查询用于接收数据的表,就能实时查询到写入的数据,示例如下:

    select * from test_message; select * from test_message where bizdate = '20200327';

    使用实时数据API写入分区父表_实时计算_大数据_数据接入_交互式分析Hologres

使用说明

  1. Hologres当前版本只支持list分区;
  2. 创建分区表时,需要显示指定分区列,分区列的类型目前只能是textint4
  3. 若有设定主键(pk),分区列必须是主键的一部分;
  4. 创建分区子表的时候,子表的分区列的值必须是个固定值;
  5. 写入分区子表的数据对应的分区列值必须严格匹配子表创建时定义的值,否则会报错;
  6. 当前不支持DEFAULT分区功能。