注册
ETL 工作原理与 DMETL 入门:从数据清洗到增量同步
专栏/技术分享/ 文章详情 /

ETL 工作原理与 DMETL 入门:从数据清洗到增量同步

科技不收敛 2026/10/16 170 2 0
摘要

ETL 工作原理与 DMETL 入门:从数据清洗到增量同步

做一张员工信息报表,往往要查员工表、部门关系表和人员信息表。表关联起来以后,还要把性别编码换成中文、统一日期格式,处理空值和重复记录。这些数据处理工作可以交给 ETL 流程完成。

DMETL 提供了数据读取、清洗转换、装载和调度组件。一个流程从源表读到数据,经过查找、过滤和转换,最后写入目标表;服务器按配置执行,客户端负责设计和查看运行情况。

1. ETL 的三个环节分别做什么

ETL 是 Extract、Transform、Load 的缩写,分别对应抽取、转换和装载。

环节 要解决的问题 员工信息整合中的例子
抽取 Extract 从哪里读取,读哪些数据 读取员工表、部门关系表和人员信息表
转换 Transform 怎样把源数据变成业务需要的数据 关联部门名称,把 M/F 转成“男/女”,统一日期格式
装载 Load 写到哪里,怎样处理已有记录 写入员工汇总表,按员工编号匹配已有记录

抽取阶段确定表、字段和过滤条件。转换阶段处理字段映射、类型、关联关系和业务规则。装载阶段决定插入哪些记录、按什么条件更新,以及怎样处理删除。

例如,源字段叫 EMP_ID,目标字段叫 EMPLOYEE_ID,配置映射就能对应起来。但如果源字段长度为 200,目标只有 50,就需要决定是调整目标结构,还是把超长记录送到问题数据输出。

2. DMETL 的客户端、服务器和元数据库

DMETL 分为客户端和服务器。客户端提供流程设计、工程管理、元数据管理和监控界面;服务器负责接收请求、执行流程、处理调度,并通过数据处理层访问不同的数据源。

元数据库保存数据源、流程等配置信息,目标数据库保存处理后的业务数据。流程配置丢失时,要恢复元数据;目标表数据出现问题时,则需要检查业务数据库和装载过程。

元数据导出能够保存流程和数据源配置,但不包含流程运行日志。需要保留元数据库全部内容时,可以使用数据库备份。

执行引擎采用多线程和流水线机制,转换中的处理步骤可以异步并发运行。 源端查询慢,下游节点就要等待读取;目标端写入慢,上游产生的数据则可能积压。看流程性能时,要结合节点处理量和源目标库负载,找到耗时的环节。

3. 数据源、转换、作业和调度怎样配合

工程里有转换、作业和调度。转换处理数据,作业安排任务的顺序,调度设置执行时间。

对象 作用 示例
数据源与数据集 定义连接信息,以及需要访问的表、查询或文件对象 员工源库连接、目标汇总表
工程 组织相关转换、作业、函数、变量和调度 员工信息整合工程
转换 组织数据的读取、处理和装载 读取员工表,查找部门,清洗后写入目标
作业 控制转换及其他任务的执行顺序和条件 检查准备条件,执行转换,处理失败分支
调度 设置流程的执行时间和周期 每天业务低峰期执行

转换中的连接线传递数据,作业中的连线控制后续任务。成功线在前一节点成功后继续,失败线进入失败处理,完成线则无论成功或失败都会继续。条件线按配置的表达式判断是否执行下一步。

比如,装载成功后才做数据核对,可以用成功线连接两个步骤;失败时需要记录错误,就单独配置失败分支。使用完成线时,装载失败也会继续执行后面的步骤。

定时任务由服务器上的 ETL 引擎执行。作业绑定了调度,却一直没有运行,可以检查调度是否启用、引擎是否启动。

4. DMETL 的安装与启动

安装时,元数据库用于存放配置,源库和目标库用于读取、写入业务数据。这几处连接应分别准备好。

部署前通常需要准备这些信息:

  • 安装包和 Key。 安装包要匹配操作系统和处理器架构,Key 要覆盖所需组件。安装手册区分标准版和企业版,企业版组件需要相应授权。
  • 目录和运行用户。 安装、日志及缓存目录需要实际运行用户的读写权限,日志、缓存和增量辅助表也会占用存储空间。
  • 元数据库。 选择内置或外部元数据库,并准备连接信息。升级已有环境时,先备份元数据和配置,按升级步骤保留原有元数据。
  • 源目标库。 从 DMETL 服务主机检查网络、账号、驱动及对象权限。使用触发器增量时,还要具备创建触发器和辅助表的条件。
  • 同步对象。 整理表和字段范围、主键或唯一列,以及目标端的插入、更新和删除方式。

安装手册支持图形安装和 Linux 字符安装。下面是字符安装的写法示意,文件名需要替换为实际安装包:

'./<DMETL安装包文件名>.bin' -i

随后按向导完成授权验证、组件和目录选择、元数据库及系统服务配置。

启动服务与配置调度引擎

cd '<DMETL安装目录>/server' ./dmetl_start.sh

出现 Metadata engine started 日志,表示手册所述的服务器启动过程完成。前台运行时,输入 close 可以正常停止服务;系统服务方式通过配套管理脚本启停。

5. 全量处理与增量同步

全量处理读取选定范围内的全部数据,适合初始化、一次性迁移或规模可控的定期重建。增量处理获取上次处理后发生的变化,并把对应的新增、更新、删除应用到目标端。

初始化时要建立源目标数据的基线。增量表读取和装载组件提供“基表同步”,用于先保持基础数据一致,再同步后续变化。 源端持续写入时,还需要安排全量与增量的衔接,处理初始化期间产生的变化。

CDC 指变化数据捕获。DMETL 手册中的触发器、影子表等方式,都可以把捕获结果写入 CDC 辅助表。

增量方式 怎样捕获变化 选用时需要关注什么
触发器 在源表建立触发器,将变化和操作信息写入 CDC 表 创建权限、源端写入影响、需要跟踪的列
影子表 SHADOW 保存一个时间点的表数据,与后续源表比较 辅助表空间、比较周期、扫描成本
时间戳 利用记录随新增或修改而更新的版本字段,与辅助表比较 版本字段必须可靠更新;手册中的“时间戳”不只指日期时间

影子表比较的是两个时点的数据状态。从这种实现方式可以推知,记录在两次比较之间多次修改,中间状态未必会被保留下来。需要保留逐次变更历史的业务,应选择并验证符合要求的捕获方式。

手册中的时间戳方式,会比较版本字段、唯一列和时间戳辅助表。如果数据库不自动维护版本字段,就要在新增、修改记录时更新它。

6. 运行记录与数据核对

运行后可以从作业和转换实例查看状态、起止时间及节点处理量。有节点失败,就结合该节点日志定位;流程成功结束,则继续核对目标表和问题数据输出。

重跑范围应结合提交方式、增量进度和已有数据确定。自动重连、磁盘缓存及断点续传按所用组件配置,连接中断后的恢复结果也应在测试环境验证。

7. 常见问题排查

客户端可以登录,定时作业没有执行

先确认作业是否绑定调度、调度是否启用,再查看 ETL 引擎状态和 START_ETL_ENGINE。

增量遗漏或重复

按捕获方式检查基表初始化、唯一定位列、监测字段和目标写入策略。时间戳方式检查版本字段是否更新;影子表和 MD5 方式检查比较周期及辅助对象状态。需要重新初始化 CDC 时,先查清当前进度和目标数据,再安排重建基线。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服