ETL = Extract‑Transform‑Load,抽取 (Extract)、转换 (Transform)、加载 (Load),是数据仓库、大数据领域最基础的数据处理流程。
拆解含义
Extract 抽取 从各个源系统把数据读出来。
源可以:业务 MySQL 库、日志文件、接口、Hive 表、第三方数据源。
例:把信贷业务库的借款表、还款流水同步抽取出来。
Transform 转换(最核心) 对原始数据做清洗、加工、计算、归一化。
常见处理:
清洗:去重、过滤脏数据、处理 null、异常值
格式转换:时间格式统一、编码转换
计算:衍生指标、统计聚合、WOE 计算、风控特征加工
脱敏:手机号、身份证脱敏
关联多表 join,生成宽表
Load 加载 把加工完成的数据写入目标存储。
目标:Hive 数仓、ClickHouse、业务库、报表库。
传统 ETL 顺序:先抽取 → 转换 → 加载。
ELT 和 ETL 的区别
ETL:Transform 在中间,转换发生在数据进入目标库之前 数据先拿出来,在外部引擎完成清洗转换,再写入数仓。早期数仓、传统数据工具多用 ETL。
ELT:Extract‑Load‑Transform,抽取‑加载‑转换 先把原始数据原样全部加载进目标存储(Hive / 对象存储),转换计算放到目标库内部做。
Hive 大数据数仓主流就是 ELT:原始数据导入 Hive,之后用 HiveQL 做转换加工。
简单记:
ETL:转换之后再入库;
ELT:先进库,再在库里面做转换。
信贷行业实际例子(ETL 完整链路)
Extract:从业务 MySQL 抽取借款订单、还款流水、用户信息。
Load:原样导入 Hive ods 层(原始数据层)。
Transform:使用 HiveQL 做清洗、去重、关联,计算:用户多头、额度使用率、历史逾期次数等风控特征。
Load:加工结果写入 dws 特征宽表层,供风控模型、报表使用。
这一套属于 ELT 模式,大数据数仓最常见。
ETL 常见工具
传统 ETL:Kettle (Data‑Integration)、DataStage
大数据 ELT:Hive、Spark‑SQL、Flink、DataX、Airflow 调度
ETL 的分层概念(数仓分层 ODS / DWD / DWS / ADS)
ODS 原始数据层:几乎原样保留源数据,不做过多加工(Extract+Load)
DWD 明细层:清洗、过滤脏数据,明细粒度数据(Transform)
DWS 汇总 / 宽表层:按用户、业务维度聚合,生成宽表(Transform)
ADS 应用层:报表、指标、模型特征,直接给业务使用(Load 输出)
常见坑点
ETL 时间窗口:信贷系统大量日切后跑 T+1 ETL 任务;任务依赖、超时、数据延迟会导致报表、特征不准。
数据一致性:源库更新,ETL 同步是否丢失变更;增量同步 vs 全量同步。
脏数据:源系统存在 null、异常字符串,ETL 阶段没有清洗,后续模型、报表出错。
调度依赖:任务 A 没跑完,任务 B 就启动,产出错误数据。
一句话速记
ETL 是抽取、转换、加载的数据处理流程;
ETL 转换在入库前,ELT 先入库再做转换;Hive 数仓大多是 ELT 模式;信贷场景用来同步业务数据,加工风控特征、报表指标。