模拟数据准备

通常企业在开始搭建数仓时,业务系统中会存在历史数据,一般是业务数据库存在历史数据,而用户行为日志无历史数据。假定数仓上线的日期为2022-02-21,为模拟真实场景,需准备以下数据。

1**)用户行为日志**

用户行为日志,一般是没有历史数据的,故日志只需要准备2022-02-21一天的数据。具体操作如下:

(1)启动Kafka。

(2)启动一个命令行 Kafka 消费者,消费 topic_log 主题的数据。

  1. [root@hadoop102 bin]$ kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic topic_log

(3)修改两个日志服务器(hadoop102、hadoop103)中的

/opt/module/applog/application.yml配置文件,将mock.date参数改为2022-02-21。

(4)执行日志生成脚本lg.sh。

(5)观察命令行 Kafka 消费者是否消费到数据。

实时数仓(九)模拟数据与ODS层 - 图1

2**)业务数据**

实时计算不考虑历史的事实数据,但要考虑历史维度数据。因此要对维度相关的业务表做一次全量同步。

(1)维度数据首日全量同步

①修改Maxwell配置文件中的mock_date参数

  1. [root@hadoop102 maxwell]$ vim /opt/module/maxwell/config.properties
  2. mock_date=2022-02-21

②启动业务数据采集通道,包括Maxwell、Kafka

③启动Kafka 消费者,观察数据是否写入 Kafka

  1. [root@hadoop102 bin]$ kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic topic_db

(2)业务数据生成

业务数据生成之前要将application. properties 文件中的mock.date 参数修改为业务时间,首日应设置为2022-02-21。

mock.clear 和 mock.clear.user 均为0,表示不重置业务数据和用户数据。如下。

这里笔者重置了,笔者的数据库使用的gmall-flink,是一个全新的数据库

实时数仓(九)模拟数据与ODS层 - 图2

同时要保证 Maxwell 配置文件 config.properties 中的 mock.date 参数和 application. properties 中 mock.date 参数的值保持一致。如下。

实时数仓(九)模拟数据与ODS层 - 图3

编写业务数据首日全量脚本

与维度相关的业务表如下

  1. activity_info
  2. activity_rule
  3. activity_sku
  4. base_category1
  5. base_category2
  6. base_category3
  7. base_province
  8. base_region
  9. base_trademark
  10. coupon_info
  11. coupon_range
  12. financial_sku_cost
  13. sku_info
  14. spu_info
  15. user_info

切换到/root/bin 目录,创建mysql_to_kafka.sh 文件

  1. [root@hadoop102 bin]$ vim mysql_to_kafka_init.sh

在脚本中添加如下内容

mysql_to_kafka_inc_init.sh

增加执行权限,执行脚本

  1. [root@hadoop102 bin]$ chmod +x mysql_to_kafka_init.sh
  2. [root@hadoop102 bin]$ mysql_to_kafka_inc_init.sh all

数仓开发之ODS层

采集到Kafka 的topic_log 和 topic_db 主题的数据即为实时数仓的 ODS 层,这一层的作用是对数据做原样展示和备份。