开发者学堂课程【实时数仓 Hologres 实战课程:实时数仓实战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/904/detail/14390
实时数仓实战
目录:
一、Hologres 生态
二、Hologres 实时导入接口介绍
三、Hologres 实时读写场景介绍
四、Demo 演示
介绍如何使用 Flink 和 Hologres,实现可扩展的、高效的、云原生的实时数仓
—、Hologres 生态介绍
Dataworks 数据集成支持输入
. Mysql Binlog
. Oracle CDC.
Datahub
- Kafka.
PolarDB
二、Hologres 实时导入接口介绍
Hologres 实时导入接口
·行存&列存都支持
·支持根据主键去重(Exactly once)·
支持整行数据局部更新
·导入即可见,毫秒级延迟
·单 Core 2W+ RPS(TPCH PartSupp 表)·
性能随资源线性扩展
·支持分区表写入
Hologres 实时导入实现原理
·一张表的数据分布在多个 Shard 上
·一条记录只会属于一个 Shard
·根据 Distribution key 属性进行 Hash
·Log Structured Merge Tree(LSM)
·全异步框架,协程(Coroutine)·
·基于 Masstree 的 Memtable
Optimized SQL
- Insert into values
- Insert into on conflict do update.
Select from where pk = xxx.
Coming soon
三、Hologres 实时写入场景介绍实时写入场景
·Append Only (日志)
·按主键去重
·按主键更新
create table randomSource (a int, b VARCHAR,c VARCHAR,d DOUBLE,eBIGINT
)
create table test {
a int,
b VARCHAR,
c VARCHA
R
,
PRIMARY KEY (a
)
} with {
type = "hologres',
‘endpoint’ - '$ip:Sport'
,
//当前Hologres实时数据API的VPC网络地址以及端口号。
’usernane’='当前阿里云账号的AccessKey ID',
‘pasaword’='当前阿里云账号的AcceasEey secret ',
‘dbName=’当前Hologres的数据库名称’,
‘tableNama’ - 'blink test'//当前Hologres接收数据的表名称。
}
;
insert
into test
select
a,b,c
from
randomSource;
B
link Sql
实时宽表 Merge 场景
实时维表 Join 场景
·行存表
·Blink/Flink
·替换 HBase
CREATF TABLE src{
a INT,
b BIGINT,
c STRTNG,
" prac_time’ AS PROCTIMEI }
) with(l
‘ connector’ - " datagen"
);
9
crcate table din {
a int,
b VARCHAR,
c VARCHAR,
PRIMARY KEY
<
a,b>,PERIDD FOR SYSTEN_TIME
) wlth (
‘connector' =’ hologres',
…
);
CREATE TABLE print_sink(
a INT
b STRING
)with(
‘connector' = " print"
);
insert into print_sink select T,a,M.b
FROM src AS T JOIN dir FOR SYSTHM_TINE AS OF T.proctine " +
“
A
S H CN T.a - H.na"
F
link 1.11
Hologres Binlog 场景
·以消息队列方式读取 Hologres 数据 Change log
·Binlog系统字段
·hg_binglog_lsn
hg_binglog_event_type
hg_binglog_timestamp_us
Flink 实时导入 Hologres Demo
Mysql Binlog 实时同步 Hologres Demo