开源ETL工具Kettle(PDI)开发(一)认识Kettle及源码部署(比kettle好用的开源etl)
一、ETL是什么?
1.ETL简介
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI(商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值)项目重要的一个环节。 通常情况下,ETL设计的好坏直接关接到BI项目的成败,在BI项目中ETL会花掉整个项目至少1/3的时间。
E:Extract 数据的抽取;
T:Transform 数据的清洗转换
L:Load 速度的加载
2. ETL 与ELT
ETL所描述的过程,一般常见的作法包含ETL或是ELT(Extract-Load-Transform),并且混合使用。通常越大量的数据、复杂的转换逻辑、目的端为较强运算能力的数据库,越偏向使用ELT,以便运用目的端数据库的平行处理能力。
二、认识kettle
1. 发展历程
Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,。
2005年12月,Kettle从2.1版本开始进入了开源领域,一直到4.1版本遵守LGPL协议,从4.2版本开始遵守Apache Licence 2.0协议。
Kettle在2006年初加入了开源的BI公司Pentaho, 正式命名为:Pentaho Data Integeration,简称“PDI”。
自2017年9月20日起,Pentaho已经被合并于日立集团下的新公司: Hitachi Vantara。
2.架构设计
Kettle是一个组件化的集成系统,包括如下几个主要部分:
1.Spoon:图形化界面工具(GUI方式),Spoon允许你通过图形界面来设计Job和Transformation,可以保存为文件或者保存在数据库中。
也可以直接在Spoon图形化界面中运行Job和Transformation,
2.Pan:Transformation执行器(命令行方式),Pan用于在终端执行Transformation,没有图形界面。
3.Kitchen:Job执行器(命令行方式),Kitchen用于在终端执行Job,没有图形界面。
4.Carte:嵌入式Web服务,用于远程执行Job或Transformation,Kettle通过Carte建立集群。
5.Encr:Kettle用于字符串加密的命令行工具,如:对在Job或Transformation中定义的数据库连接参数进行加密。
三、Kettle源码下载及部署
1.源码地址
github上面kettle的源码下载地址:https://github.com/pentaho/pentaho-kettle
2、环境准备
- Java JDK 1.8
- Maven, version 3
- IDEA
3.源码说明
下载源码解压后用IDEA打开,如图
代码项目结构
- assemblies: 项目分发归档文件在此模块下生成
- core: 核心实现
- dbdialog: 数据库”对话框
- ui: 用户界面
- engine: PDI引擎
- engine-ext: PDI引擎扩展
- plugins: PDI核心插件
- integration:测试
4.源码打包
执行mvn clean install -DskipTests
打包好之后,assembliesclienttarget会有一个zip包,我们将它拷贝到我们想要的地方解压,如图
5.运行Kettle
mysql链接库准备,下载mysql-connector-java-8.0.25,并拷贝到lib目录中
在window环境 运行spoon.bat
数据库连接配置
菜单:工具向导创建数据库连接向导
如果没有把mysql连接库拷贝lib里,创建连接会报错,下载拷贝后,重新运行spoon.bat
三、关于Kettle二次开发的设想
kettle工具已经很优秀了,但是我们如果真正应用到我们项目中,个人觉得还有有些达不到要求,在开源基础能否进行二次开发,
1.spoon有没有web版?
2.kettle引擎提供API方式吗?
3.作业调度这里官方建议用操作系统的作业调度
在开源基础上想实现web版,有兴趣的可以一块参与哦,我也会记录我二次开发的全部过程。