Mrkuhuo / data-warehouse-learning

大数据 实时/离线/数仓/数据湖实战,通过一套完整的 数据源->ods->dwd->dws->ads->数据展示 全流程代码及文档助你成为一个优秀的大数据开发者。组件涉及flink、paimon、doris、seatunnel、dolphinscheduler、datart、dinky、hudi、iceberg。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

开源不易,请各位朋友点个 ★star★ 支持一下,非常感谢~

【 Github地址:https://github.com/Mrkuhuo/data-warehouse-learning 】

【 Gitee 地址:https://gitee.com/wzylzjtn/data-warehouse-learning 】

1 介绍

《实时/离线数仓实战》代码,其中 warehouseV1warehouseV2 的区别是V1业务逻辑较为简单,V2业务逻辑比较齐全,V1的模拟数据生产是通过 Python 脚本模拟生成,V2的模拟数据是通过 JAVA 代码来生成。

2 代码结构

├─src
│  └─main
│      └─java
│          └─org
│              └─bigdatatechcir
│                  ├─images
│                  ├─warehousev1
│                  │  ├─datageneration
│                  │  ├─doris
│                  │  │  ├─dml
│                  │  │  │  ├─ads
│                  │  │  │  ├─dwdarehouse-learning
│                  │  │  │  ├─dws
│                  │  │  │  └─ods
│                  │  │  └─logical
│                  │  │      ├─ads
│                  │  │      ├─dwd
│                  │  │      └─dws
│                  │  ├─flink
│                  │  │  ├─ads
│                  │  │  │  └─test
│                  │  │  ├─dwd
│                  │  │  │  └─test
│                  │  │  ├─dws
│                  │  │  │  └─test
│                  │  │  ├─ods
│                  │  │  │  └─test
│                  │  │  └─sql
│                  │  │      ├─ads
│                  │  │      ├─dwd
│                  │  │      ├─dws
│                  │  │      └─ods
│                  │  ├─mysql
│                  │  └─seatunnel
│                  └─warehousev2
│                      ├─datageneration
│                      │  ├─business
│                      │  └─userlog
│                      ├─doris
│                      │  ├─dml
│                      │  │  ├─ads
│                      │  │  ├─dim
│                      │  │  │  └─data
│                      │  │  ├─dwd
│                      │  │  ├─dws
│                      │  │  └─ods
│                      │  └─logical
│                      │      ├─ads
│                      │      ├─dim
│                      │      ├─dwd
│                      │      └─dws
│                      ├─flink
│                      │  ├─doris
│                      │  │  ├─catalog
│                      │  │  └─ods
│                      │  ├─hudi
│                      │  │  ├─ads
│                      │  │  ├─dim
│                      │  │  ├─dwd
│                      │  │  ├─dws
│                      │  │  └─ods
│                      │  ├─iceberg
│                      │  │  ├─ads
│                      │  │  ├─dim
│                      │  │  ├─dwd
│                      │  │  ├─dws
│                      │  │  └─ods
│                      │  ├─paimon
│                      │  │  ├─ads
│                      │  │  ├─dim
│                      │  │  ├─dwd
│                      │  │  ├─dws
│                      │  │  └─ods
│                      │  └─udf
│                      └─seatunnel
│                          └─ods

3 技术架构

技术架构

该电商数仓(实时/离线)项目技术架构分为四部分:

  1. 数据源模块:采用 JAVA 代码来生成电商业务数据写入 MySQL ,生成用户日志数据写入 Kafka ,两者都可以在配置文件中配置需要生成数据的日期
  2. 数据采集模块:使用 Dinky 开发 FlinkSQL 代码来消费 Kafka 用户日志数据并写入 Doris \ Paimon \ Hudi \ Iceberg ODS 层,使用 DolphinScheduler 配置 SeaTunnel 任务同步 MySQL 业务数据到 Doris ODS 层, 使用 FlinkSQL/CDC 方式分别采集 KafkaMySQL 中的数据到 Paimon \ Hudi \ Iceberg ODS 层
  3. 数仓模块:数仓模块采用业界通用的 ODS -> DWD/DIM -> DWS -> ADS 四级分层,数据在 Doris \ Paimon \ Hudi \ Iceberg 中分别通过批量调度和实时处理的方式进行流转
  4. 数据可视化:ADS 层和 DWS 层的数据可以通过 SuperSetDataRT 来进行报表和大屏制作及展示

通用部分

1) 组件安装

安装文档

2) 模拟数据生成

模拟数据生成

生成业务库数据如下图所示:

业务库数据

生成用户日志数据如下图所示:

用户日志数据

离线数仓建设部分(Doris)

涉及组件:Kafka + Flink + Doris + Seatunnel + Dolphinscheduler

1) 数据采集

Kafka 数据通过 Flink 接入 Doris

Kafka 数据接入

MySQL 数据通过 SeaTunnel 接入 Doris

MySQL 数据接入

2) Doris ODS 层建设

数据采集进 Doris ODS 层,实现效果如下图所示:

Doris ODS层建设

3) Doris DIM 层建设

开发 DorisSQL 进行 DIM 层数据处理

Doris DIM层处理逻辑

DIM 层数据实现效果如下图:

Doris DIM层数据库

4) Doris DWD 层建设

开发 DorisSQL 进行 DWD 层数据处理

Doris DWD层处理逻辑

DWD 层数据实现效果如下图:

Doris DWD层数据库

5) Doris DWS 层建设

开发 DorisSQL 进行 DWS 层数据处理

Doris DWS层处理逻辑

DWS 层数据实现效果如下图:

Doris DWS层数据库

6) Doris ADS 层建设

开发 DorisSQL 进行 ADS 层数据处理

Doris ADS层处理逻辑

ADS 层数据实现效果如下图:

Doris ADS层数据库

7) 任务编排

最终的任务概览如下图所示

Doris 任务概览

任务编排效果如下图所示

Doris 任务概览

8) 数据展示

大屏

实时数仓(数据湖)建设部分(Paimon/Hudi/Iceberg)

涉及组件:Kafka + Flink(CDC/SQL/UDF) + Paimon/Hudi/Iceberg + Hive + Dinky

1) Paimon ODS 层建设

Kafka 数据通过 FlinkSQL 接入 Paimon/Hudi/Iceberg ,实际数据落到 Hive

MySQL 数据通过 FlinkCDC 接入 Paimon/Hudi/Iceberg ,实际数据落到 Hive

Kafka/MySQL 数据接入

数据采集进 Paimon ODS 层,实现效果如下图所示:

Paimon ODS层建设

2) Paimon DWD 层建设

开发 FlinkSQL 进行 DWD 层数据处理

Paimon DWD层建设

DWD 层数据实现效果如下图:

Paimon DWD层建设

3) Paimon DIM 层建设

开发 FlinkSQL 进行 DIM 层数据处理

Paimon DIM层建设

DIM 层数据实现效果如下图:

Paimon DIM层建设

4) Paimon DWS 层建设

开发 FlinkSQL 进行 DWS 层数据处理

Paimon DWS层建设

DWS 层数据实现效果如下图:

Paimon DWS层建设

5) Paimon ADS 层建设

开发 FlinkSQL 进行 ADS 层数据处理

Paimon ADS层建设

ADS 层数据实现效果如下图:

Paimon ADS层建设

6) Doris Catalog 连接 Paimon + DataRT 进行数据展示

大屏

About

大数据 实时/离线/数仓/数据湖实战,通过一套完整的 数据源->ods->dwd->dws->ads->数据展示 全流程代码及文档助你成为一个优秀的大数据开发者。组件涉及flink、paimon、doris、seatunnel、dolphinscheduler、datart、dinky、hudi、iceberg。

License:Artistic License 2.0


Languages

Language:Python 88.5%Language:Java 11.1%Language:Shell 0.4%