本文以GitHub公开事件数据为例,为您介绍使用Hologres+DataWorks数据集成构建实时数仓,并通过Hologres对接BI分析工具(本文以DataV为例)的基本步骤,实现海量数据的实时分析。
示例架构
其中:
待处理数据:
本实践使用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环境
您需开通DataWorks并创建工作空间,详情请参见开通DataWorks服务和创建工作空间。
说明如果您之前尚未开通过任何地域的DataWorks(新用户),则开通DataWorks时可以勾选DataWorks资源组选项,系统会为您自动分配一个按量付费类型的新版资源组。
新用户也可以直接在资源组列表页面购买使用新版资源组,购买方式请参见新增和使用新版通用型资源组。如果老用户需要购买使用新版资源组,请提交工单。
新版资源组的计费详情请参见新版资源组计费。
(可选)购买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
创建同步任务所需的数据源。
登录DataWorks控制台,选择工作空间所在地域。
单击左侧导航栏的管理中心,在下拉列表中选择对应工作空间后,单击进入管理中心。
单击左侧导航栏的数据源 > 数据源列表,在数据源页面单击新增数据源。
按照界面指引创建MySQL数据源和Hologres数据源。主要参数配置如下:
MySQL数据源:数据来源
参数
说明
数据源名称
自定义。
配置模式
选择连接串模式。
JDBC链接地址
单击新增地址,配置信息如下:
主机地址IP:rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com
端口号:3306
数据库名称
github_events_share
用户名
workshop
密码
workshop#2017
此密码仅为本教程示例,请勿在实际业务中使用。
认证选项
选择无认证。
Hologres数据源:数据去向
参数
说明
数据源名称
自定义。
认证方式
默认为阿里云账号及阿里云RAM角色。
所属云账号
选择当前阿里云主账号。
地域
选择Hologres实例所在地域。
Hologres实例
选择已创建的Hologres实例。
数据库名称
填写上述已创建的Hologres数据库名称。
默认访问身份
选择阿里云主账号。
认证选项
选择无认证。
创建单表实时同步任务。
您可在DataWorks的DataStudio侧进行实时同步任务配置,具体操作请参见DataStudio侧实时同步任务配置。主要操作流程如下:
在数据同步任务界面,配置输入节点和输出节点。重点参数配置如下:
节点
类型
节点配置
备注
输入
MySQL
数据源
选择上述已创建的MySQL数据源。
MySQL类型节点配置详情请参见配置MySQL输入。
表
选择
github_public_event
。输出
Hologres
数据源
选择上述已创建的Hologres数据源。
Hologres类型节点配置详情请参见配置Hologres输出。
表
选择已创建的
hologres_dataset_github_event.hologres_github_event
。字段映射
选择同名映射。
在数据同步任务界面右侧单击基本配置,选择已创建的独享数据集成资源组或新版资源组。
说明新用户只能使用新版资源组,且占用的CU量配置为2 CU。
提交并发布实时同步任务,详情请参见提交并发布实时同步任务。
在运维中心 > 实时任务运维 > 实时同步任务面板启动该任务,详情请参见:实时同步任务运维。
待数据同步成功后,前往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事件数据实时大屏。
创建Hologres数据源。
将数据所在的Hologres实例和数据库创建为DataV的数据源,详情请参见DataV。
创建可视化应用。
登录DataV控制台。
在工作台页面,单击创建PC端看板。
选择使用Hologres实时分析GitHub事件数据模板。
修改模板中相关组件的数据源。
以左上角的今日公开事件总数为例:
单击今日公开事件总数对应的数字框,点击右侧数据源,选择数据源类型为实时数仓Hologres。
选择已有数据源为您已创建的数据源。
如果您在Hologres中的表名和Schema与本实践相同,则不需修改SQL。
修改完成后,数据响应结果刷新,大屏中成功展示实时数据。
按照示例更新大屏中的数据源和表名,需更新组件及更新后效果如下图所示。
单击右上角发布,完成大屏搭建。
您也可以单击预览,预览实时更新的数据大屏。