Kettle(Pentaho Data Integration)

Kettle 是开源 ETL / ELT 工具套件 Pentaho Data Integration(PDI) 的旧称;图形客户端 Spoon 仍是日常设计与调试的主力界面。适合离线批量抽取、清洗、维度建模入库,以及与报表(Pentaho BI)链路衔接。

套件总览:→ Pentaho

返回 开发工具


核心产物:Transformation vs Job

类型文件扩展名粒度典型用途
Transformation(转换).ktr步骤(Step) 组成的 DAG,按 数据行 流动单段 ETL:读表 → 字段映射 → 清洗 → 写表
Job(作业).kjb作业项(Job Entry),顺序/分支控制调度 shell、FTP、执行多个 .ktr、错误分支、邮件告警

约定:能用 Transformation 解决的不要用 Job 嵌一层;Job 负责编排与运维语义(成功/失败走向),Transformation 专注数据处理。


常用概念

  • Hop:步骤之间的连线;数据沿 Hop 推送,默认一行一行流过中间步骤。
  • 数据库连接:在 Spoon 里配置后可被多个 Step 引用;生产环境常用 JNDI变量占位,避免把账号写死在 .ktr 里。
  • 变量(Variables) vs 参数(Parameters)
    • 变量:${VAR},常见于路径、连接扩展选项;可由启动脚本、kitchen.sh/环境传入。
    • 参数:在 Job 参数表里声明,更适合「本次运行传入的业务批次号、日期分区」等。
  • Repository(资源库):可把 Job/Transformation 存进数据库便于权限与版本协作;小团队也可用 文件仓库(导出 XML)配 Git。

Spoon 快速上手路径

  1. 新建 Transformation输入表输入 / 文本文件输入输出表输出 / 插入 / 更新
  2. 右键步骤 → 预览行,确认抽样数据与类型。
  3. Transformation 设置 里核对 日志、必要时调 性能(提交记录数 / 缓存)
  4. 若有多段串联(例如「维表加载后再事实表」),外层建 Job:Start → Transformation → Success。

命令行调度:

  • pan.sh / pan.bat:执行单个 .ktr
  • kitchen.sh / kitchen.bat:执行 .kjb

示例(Linux):

./kitchen.sh -file=/path/sync_daily.kjb -level=Basic -param:RUN_DATE=2026-05-14

高频步骤(Transformation)

方向步骤名说明
输入表输入SQL 可直接 参数化;注意绑定变量与方言
输入CSV / Excel编码、分隔符、标题行勾选要提前对齐
转换字段选择改名、裁剪字段、改类型
转换计算器 / 字符串操作简单派生列
转换排序 / 分组内存占用随数据量上升,大数据慎用在窄机上
转换合并连接类比 SQL JOIN,键要提前排序的步骤可选「排序合并」
输出表输出最快批量插入之一;字段映射清晰即可
输出插入 / 更新类似 UPSERT;键要选择合适索引列

性能与稳定性要点

  • 提交记录数(Commit size):表输出类步骤调大可减少 JDBC 往返;过大占用内存与事务日志,需压测折中。
  • Use batch updates:大批量写入时可开(驱动支持为前提)。
  • 复制 vs 分发:同一输出的多条 Hop:右键 Hop 可选「复制」(广播)或「分发」(轮询分流),并行分支时用错会导致逻辑 Bug。
  • 数据库排序内存:排序步骤默认偏内存;数据量大时优先考虑 库端 ORDER BY + 游标式读取,或改用更适合的计算引擎(Spark、DBT、专用同步工具)。
  • 错误处理:关键 Step 右键 → 定义错误处理,把坏行写入拒绝表或文件,避免静默丢数。

与其它路线的对照(选型心里有数)

Kettle备注
偏编码Python/SQL 脚本 + Airflow版本评审友好,复杂变换可读性有时更好
云原生Flink / Spark / 云厂商 Data Integration超大规模流批一体通常不走 Spoon
轻量同步Debezium + Kafka、CDC 工具实时增量往往不是 Kettle 强项

Kettle 的优势在于 可视化上手快、与企业遗留 JDBC 源兼容面广;劣势是 单机内存瓶颈、复杂编排的版本协作依赖规范(Git + 导出约定)。


小结

  • .ktr 管数据处理步骤;.kjb 管调度与流程控制。
  • 生产务必:参数化连接与路径错误行落地合理提交批次与排序策略
  • 大规模或实时链路再评估是否迁移到代码化流水线或分布式引擎。