作者:孤火自燃 | 来源:互联网 | 2023-09-03 19:05
大数据平台数据仓库ETL基本思路
ETL工具
开源工具:
Sqoop:Hadoop(hive)和关系型数据库之间传输数据的开源ETL工具。
Beeline:hive客户端工具,基于SQLline的JDBC客户端
Azkaban:任务调度开源工具。
自开发工具:
- 脚本生成工具:jar包,基于系统调研时产生的表级调研文档,自动检索数据源并生成整体ETL工具中拥有较高规范的脚本文件的脚手架:ods层建表语句、sqoop脚本、sync脚本、flow脚本。必要时依据实际情况对脚本进行人工调整。
- 脚本执行工具:python程序,读取参数文件数据并替换脚本中的对应参数,执行脚本。
- SQL执行工具:python程序,读取参数文件数据并替换脚本中的对应参数,执行脚本。
- CTL参数生成工具:python程序,基于TDH-mysql库ctl控制表生成对应的参数文件。
- 互斥锁:依据azkaban中并发project的操作表情况,设计互斥锁避免并发操作同一张表的情况发生。
- 数据源检查:jar包,基于TDH-mysql库ctl表信息和数据源实际情况,检查数据源表结构变更情况,判断是否需人工介入,记录变更情况。
- 稽核工具:oracle-ods层数据抽取完整性、ods-dw层数据映射正确性稽核。人工开发脚本。
ETL开发过程
大数据平台新数据源加入,ETL开发过程:
- 数据调研:
- 对数据源系统进行调研,输出系统调研文档、表级调研文档、字段级调研文档、数据字典等调研资料
- 脚本脚手架生成:
- 确定大数据平台抽取范围(表+时间)、抽取方式(增量/全量)、抽取周期等。信息补充到表级调研文档
- 脚本生成工具+表级调研文档—>生成各脚本程序的脚手架。细节及特殊情况进行人工调整。包括:ods层建表语句、sqoop脚本、sync脚本、azkaban调度脚本
- Waterdrop下使用ods层建语句创建数据源ods层表结构:txtfile和orc表
- Sqoop脚本及sync脚本拷贝到指定路径,调整或检查azkaban脚本
- 上传azkaban脚本,检查任务逻辑
- 参数文件生成:
- 配置TDH-mysql的ctl库相关表信息
- 执行CTL参数生成工具生成对应数据源的参数文件
- 数据初始化:
- 调整参数文件,使数据同步范围为全部时间(全量)
- 执行azkaban任务,初始化数据到ods层
- DW层脚本开发:
- DW层表结构设计、关联关系设计、映射关系设计,形成dw层设计文档
- DW层映射mapp脚本开发,形成sql脚本文件,拷贝到执行路径
- DW层建表语句及TMP表建表语句存档
- DW层部署:
- 对DW层脚本进行血缘分析,生成依赖关系文档
- 调整azkaban脚本文件,补充DW层任务调度
- 按需设计互斥锁、调整相关代码补充锁机制
- 数据稽核:
- 数据源检查程序初始化
- 数据稽核脚本配置
- 启动运行(调整azkaban脚本)