本文以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資源組選項,系統會為您自動分配一個按量付費類型的新版資源組。
新用戶也可以直接在資源組列表頁面購買使用新版資源組,購買方式請參見新增和使用Serverless資源組。如果老用戶需要購買使用新版資源組,請提交工單。
新版資源組的計費詳情請參見Serverless資源組計費。
(可選)購買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。
修改完成后,數據響應結果刷新,大屏中成功展示實時數據。
按照示例更新大屏中的數據源和表名,需更新組件及更新后效果如下圖所示。
單擊右上角發布,完成大屏搭建。
您也可以單擊預覽,預覽實時更新的數據大屏。