RDS实时同步数据至Hologres

本文以GitHub公开事件数据为例,为您介绍使用Hologres+DataWorks数据集成构建实时数仓,并通过Hologres对接BI分析工具(本文以DataV为例)的基本步骤,实现海量数据的实时分析。

示例架构

image.png

其中:

  • 待处理数据:

    本实践使用GitHub公开事件作为示例数据,更多关于数据集的介绍请参见业务与数据认知

  • 数据库:

    本实践使用RDS MySQL数据库,通过DataWorks数据集成功能将数据库中数据同步至Hologres,您也可以选择其他数据库,DataWorks支持的数据源请参见支持的数据源及同步方案

  • 数据服务:

    Hologres是兼容PostgreSQL协议的实时数仓引擎,支持海量数据实时写入与更新、实时数据写入即可查。

  • 实时大屏:

    本实践以DataV为例,为您展示搭建实时大屏后查看并分析数据的效果。

实践步骤

准备工作

本实践使用已存储在公共MySQL中的Github公共事件作为示例数据,因此您无需操作Github公共事件数据集成至数据库步骤,使用DataWorks数据集成功能将数据库中的示例数据同步至Hologres中进行分析。本实践需准备的环境如下所示。

  • 准备Hologres环境

    您需开通Hologres,创建并连接Hologres数据库,后续在Hologres数据库中执行命令读取数据。您也可以申请Hologres的免费资源包,免费试用体验本教程的核心步骤。Hologres提供的免费资源包介绍及申请引导请参见新用户免费试用

    说明

    为确保Hologres与DataWorks之间的网络连通性,请确保DataWorks资源组与Hologres使用同一个VPC,详情请参见网络连通方案

  • 准备RDS MySQL环境

    本实践已为您准备好MySQL公共环境,您可以直接使用MySQL公共环境验证本实践。如果您需要同步您的数据,需开通RDS MySQL数据库,详情请参见快速创建RDS MySQL实例

  • 准备DataWorks环境

    1. 您需开通DataWorks并创建工作空间,详情请参见开通DataWorks服务创建工作空间

      • DataWorks新版资源组默认不具备公网访问能力,为确保公共MySQL(公网)与DataWorks之间的网络连通性,需要为绑定的VPC配置公网NAT网关并绑定EIP,详情请参见网络连通方案

      说明
      • 如果您之前尚未开通过任何地域的DataWorks(新用户),则开通DataWorks时可以勾选DataWorks资源组选项,系统会为您自动分配一个按量付费类型的新版资源组

      • 新用户也可以直接在资源组列表页面购买使用新版资源组,购买方式请参见新增和使用新版通用型资源组。如果老用户需要购买使用新版资源组,请提交工单。

      • 新版资源组的计费详情请参见新版资源组计费

    2. (可选)购买DataWorks独享数据集成资源组,绑定至您创建的DataWorks工作空间并为独享数据集成资源组绑定专有网络(VPC),详情请参见新增和使用独享数据集成资源组

      为确保Hologres与DataWorks之间的网络连通性,请确保DataWorks资源组与Hologres使用同一个VPC。

      说明

      仅当您此前购买和使用过旧版资源组时,需要执行该步骤。

  • (可选)准备大屏搭建产品:本文以DataV为例

    本文以DataV为例,为您示例搭建大屏后的效果。

创建Hologres内部表

您需要在Hologres中先创建一个Hologres内部表并创建相应的索引,用于后续数据实时写入,示例代码如下。

-- 新建schema用于创建内表并导入数据
CREATE SCHEMA IF NOT EXISTS hologres_dataset_github_event;

DROP TABLE IF EXISTS hologres_dataset_github_event.hologres_github_event;

BEGIN;
CREATE TABLE hologres_dataset_github_event.hologres_github_event (
  id bigint PRIMARY KEY,
  actor_id bigint,
  actor_login text,
  repo_id bigint,
  repo_name text,
  org_id bigint,
  org_login text,
  type text,
  created_at timestamp with time zone NOT NULL,
  action text,    
  commit_id text,
  member_id bigint,
  language text
);
CALL set_table_property ('hologres_dataset_github_event.hologres_github_event', 'distribution_key', 'id');
CALL set_table_property ('hologres_dataset_github_event.hologres_github_event', 'event_time_column', 'created_at');
CALL set_table_property ('hologres_dataset_github_event.hologres_github_event', 'clustering_key', 'created_at');

COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.id IS '事件ID';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.actor_id IS '事件发起人ID';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.actor_login IS '事件发起人登录名';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.repo_id IS 'repoID';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.repo_name IS 'repo名称';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.org_id IS 'repo所属组织ID';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.org_login IS 'repo所属组织名称';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.type IS '事件类型';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.created_at IS '事件发生时间';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.action IS '事件行为';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.commit_id IS '提交记录ID';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.member_id IS '成员ID';
COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.language IS '编程语言';

COMMIT;

通过DataWorks数据集成实时写入数据至Hologres

  1. 创建同步任务所需的数据源。

    1. 登录DataWorks控制台,选择工作空间所在地域。

    2. 单击左侧导航栏的管理中心,在下拉列表中选择对应工作空间后,单击进入管理中心

    3. 单击左侧导航栏的数据源 > 数据源列表,在数据源页面单击新增数据源

    4. 按照界面指引创建MySQL数据源和Hologres数据源。主要参数配置如下:

      MySQL数据源:数据来源

      参数

      说明

      数据源名称

      自定义。

      配置模式

      选择连接串模式

      JDBC链接地址

      单击新增地址,配置信息如下:

      • 主机地址IP:rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com

      • 端口号:3306

      数据库名称

      github_events_share

      用户名

      workshop

      密码

      workshop#2017

      此密码仅为本教程示例,请勿在实际业务中使用。

      认证选项

      选择无认证

      Hologres数据源:数据去向

      参数

      说明

      数据源名称

      自定义。

      认证方式

      默认为阿里云账号及阿里云RAM角色

      所属云账号

      选择当前阿里云主账号

      地域

      选择Hologres实例所在地域。

      Hologres实例

      选择已创建的Hologres实例。

      数据库名称

      填写上述已创建的Hologres数据库名称。

      默认访问身份

      选择阿里云主账号

      认证选项

      选择无认证

  2. 创建单表实时同步任务。

    您可在DataWorks的DataStudio侧进行实时同步任务配置,具体操作请参见DataStudio侧实时同步任务配置。主要操作流程如下:

    1. 在数据同步任务界面,配置输入节点和输出节点。重点参数配置如下:

      节点

      类型

      节点配置

      备注

      输入

      MySQL

      数据源

      选择上述已创建的MySQL数据源。

      MySQL类型节点配置详情请参见配置MySQL输入

      选择github_public_event

      输出

      Hologres

      数据源

      选择上述已创建的Hologres数据源。

      Hologres类型节点配置详情请参见配置Hologres输出

      选择已创建的hologres_dataset_github_event.hologres_github_event

      字段映射

      选择同名映射。

    2. 在数据同步任务界面右侧单击基本配置,选择已创建的独享数据集成资源组或新版资源组。

      说明

      新用户只能使用新版资源组,且占用的CU量配置为2 CU

  3. 提交并发布实时同步任务,详情请参见提交并发布实时同步任务

  4. 运维中心 > 实时任务运维 > 实时同步任务面板启动该任务,详情请参见:实时同步任务运维

    待数据同步成功后,前往Hologres进行实时数据分析。

    说明

    公共数据源MySQL中保留近7天数据,离线数据将会通过全量进行同步,实时数据将在全量初始化完成后,实时写入Hologres。

查询实时数据

在Hologres中运行如下示例命令查询今日最活跃项目:

SELECT
    repo_name,
    COUNT(*) AS events
FROM
    hologres_dataset_github_event.hologres_github_event
WHERE
    created_at >= CURRENT_DATE
GROUP BY
    repo_name
ORDER BY
    events DESC
LIMIT 5;

返回结果示例如下:

repo_name	                             events
--------------------------------------+---------
Hardwaregore/gimmie-commits	           59672
happyfish2024/mins	                   12626
bullet-dev-team/demo-app-env-list	     9002
bullet-dev-team/python-pyramid-public	 8255
SSlam1234/StatSlamImagesCDN	           6618

(可选)通过DataV搭建实时大屏

您可以通过DataV的数据大屏模板,基于Hologres数据源来快速搭建GitHub事件数据实时大屏。

  1. 创建Hologres数据源。

    将数据所在的Hologres实例和数据库创建为DataV的数据源,详情请参见DataV

  2. 创建可视化应用。

    1. 登录DataV控制台

    2. 工作台页面,单击创建PC端看板

      选择使用Hologres实时分析GitHub事件数据模板

    3. 修改模板中相关组件的数据源。

      以左上角的今日公开事件总数为例:

      1. 单击今日公开事件总数对应的数字框,点击右侧数据源,选择数据源类型实时数仓Hologresimage.png

      2. 选择已有数据源为您已创建的数据源。

        如果您在Hologres中的表名和Schema与本实践相同,则不需修改SQL。

      3. 修改完成后,数据响应结果刷新,大屏中成功展示实时数据。

      4. 按照示例更新大屏中的数据源和表名,需更新组件及更新后效果如下图所示。

        image.png

    4. 单击右上角发布,完成大屏搭建。

      您也可以单击预览,预览实时更新的数据大屏。