开源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

开源ETL工具Kettle(PDI)开发(一)认识Kettle及源码部署(比kettle好用的开源etl)

2、环境准备

  • Java JDK 1.8
  • Maven, version 3
  • IDEA

3.源码说明

下载源码解压后用IDEA打开,如图

开源ETL工具Kettle(PDI)开发(一)认识Kettle及源码部署(比kettle好用的开源etl)

代码项目结构

  • assemblies: 项目分发归档文件在此模块下生成
  • core: 核心实现
  • dbdialog: 数据库”对话框
  • ui: 用户界面
  • engine: PDI引擎
  • engine-ext: PDI引擎扩展
  • plugins: PDI核心插件
  • integration:测试

4.源码打包

执行mvn clean install -DskipTests

开源ETL工具Kettle(PDI)开发(一)认识Kettle及源码部署(比kettle好用的开源etl)

打包好之后,assembliesclienttarget会有一个zip包,我们将它拷贝到我们想要的地方解压,如图

开源ETL工具Kettle(PDI)开发(一)认识Kettle及源码部署(比kettle好用的开源etl)

5.运行Kettle

mysql链接库准备,下载mysql-connector-java-8.0.25,并拷贝到lib目录中

在window环境 运行spoon.bat

开源ETL工具Kettle(PDI)开发(一)认识Kettle及源码部署(比kettle好用的开源etl)

数据库连接配置

菜单:工具向导创建数据库连接向导

如果没有把mysql连接库拷贝lib里,创建连接会报错,下载拷贝后,重新运行spoon.bat

开源ETL工具Kettle(PDI)开发(一)认识Kettle及源码部署(比kettle好用的开源etl)

三、关于Kettle二次开发的设想

kettle工具已经很优秀了,但是我们如果真正应用到我们项目中,个人觉得还有有些达不到要求,在开源基础能否进行二次开发,

1.spoon有没有web版?

2.kettle引擎提供API方式吗?

3.作业调度这里官方建议用操作系统的作业调度

在开源基础上想实现web版,有兴趣的可以一块参与哦,我也会记录我二次开发的全部过程。

相关新闻

联系我们
联系我们
公众号
公众号
在线咨询
分享本页
返回顶部