🔝 Kettle资源链接

//
[kettle官方首页]Data Integration | Pentaho Community
http://community.pentaho.com/projects/data-integration/


//
大数据利器ETL工具KETTLE之一---初识weirise新浪博客
http://blog.sina.com.cn/s/blog_96678c5e0102vwh5.html

SPOON :通过图形界面来设计转换过程;
PAN:后台运行转换过程;。
CHEF:通过图形界面设计任务过程;
KITCHEN:后台运行任务过程;
Carte:配置kettle集群,运行job和转换;
3.0版本以后,chef的功能集成到spoon中了。
2006年,Kettle加入了开源的BI组织Pentaho,正式命名为PDI(Pentaho Data Integeration)。

//
大数据利器ETL工具KETTLE之二---见面weirise新浪博客
http://blog.sina.com.cn/s/blog_96678c5e0102vwj6.html
3.0版本以后,spoon和chef集成到了一起,所以图形界面中可以建立job和转换两类东东,后缀名分别是kjb和ktr。
这里简单聊聊job和转换的区别,转换可以理解为一条生产流水线,专注于数据处理。而job可以调度转换,可以进行时间设置,也就是其中所说的作业定时调度,当然,也可以执行一些文件处理,上传下载、发送邮件、执行命令、调用其它job等。总之,转换就是数据处理,job就是流程控制。
连接Transformation步骤或者连接Job(实际上就是执行顺序)的连线叫hop。
另外还有一个概念叫资源库,意思是编写的job和转换保存的地方,分为两类,文件资源库和数据库资源库,前者是把job和转换存到一个特定的文件夹内,后者是存到数据库对应的表中,这样做的目的是便于共享和移植。当然不使用资源库也可以,job和转换直接以xml形式存放到了目录中。

//
大数据利器ETL工具KETTLE之三---基本用法weirise新浪博客
http://blog.sina.com.cn/s/blog_96678c5e0102vwj7.html
kettle的基本功能分为转换功能和作业job功能。

一、转换的主要功能:
1、支持多种数据源:文本文件、Access、Excel、XML、Property文件格式等等;
2、支持多种查询:存储过程、 数据库查询、判断表以及列、操作系统文件是否存在等;
3、支持的转换方式:值映射、分组、去重、拆分字段、行列转换等(自己可以写插件扩展);
4、支持多种脚本:JS脚本、 SQL脚本、正则表达式等;
5、支持渐变维度更新;
6、支持批量加载;
7、支持分区表和集群;
8、支持大数据对接;

二、作业的主要功能:

1、可以执行操作系统命令和操作:ping、log、mail、文件比较、文件操作等;
2、判断文件是否存在;
3、执行JavaScript、SQL、Shell脚本;
4、支持安全FTP获取、上传文件;
5、删除远程文件;
6、支持SSH2上传下载;


//
使用kettle向HBase导入数据 - 随便写点的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/wenjiangchun/article/details/50163123

Paste_Image.png

//
kettle入门(三) 之kettle连接hadoop&hdfs图文详解--阿离的文章--CFANZ社区--IT技术分享网站
http://www.cfanz.cn/index.php?c=article&a=read&id=226244

Paste_Image.png

//
kettle 开发总结 - 搞怪的索引 - 博客频道 - CSDN.NET
http://blog.csdn.net/perfect_db/article/details/9715481

Paste_Image.png
Paste_Image.png

//
kettle初探 - wingsless - 博客园
http://www.cnblogs.com/wingsless/p/3187436.html

Paste_Image.png

下面是补充部分:

   在一个Job或者一个trans建立好之后,就可以建立定时任务了。如果是DS,那么DS客户端本身就支持schedule,但是Kettle因为没有服务端和客户端的概念,因此只有使用linux的crontab,其实Job本身也支持定时,但是你必须保证图形界面一直开着,这样并不如crontab那么好。**在命令行里使用kettle很简单,Job用kitchen调度,trans用pan调度。**

 下面是一个kitchen的调度命令:

 bash /home/kettle/data-integration/kitchen.sh /rep kettle_demo /user username /pass passwd /level Minimal /dir /dirname /job jobname

 rep那里写自己的资源库名称。

 trans和上面一样,略有不同:

 bash /home/kettle/data-integration/pan.sh /rep kettle_demo /user username /pass passwd /level Minimal /dir /dirname /trans transname

//
社工库数据格式化之Kettle Spoon | 邪恶十六进制
http://www.evil0x.com/posts/29336.html?safedogsession=DDC2A6F756

Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

这里就要说到kettle。首先得说说Pentaho这个企业。Pentaho主要致力于大数据的分析,整理和管理,并且这家公司开发出来的工具是开源的!没错,就是开源的。任何人都可以查看这个项目的源代码,并且对其进行更改和研究。这家公司开发了很多管理工具或者框架,最为出名的就是kettle了。Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。ELT的全称为Extraction, Transformation Loading,其中文解释为提取,转换和加载。Kettle这个工具里面有SPOON,PAN,CHEF,Encr和KITCHEN这么五个基本组建。

SPOON 允许你通过图形界面来设计ETL转换过程(TRANSFORMATION)。

PAN 允许你批量运行由SPOON设计的ETL转换 (例如使用一个时间调度器)。PAN是一个后台执行的程序,没有图形界面。

CHEF 允许你创建任务(JOB)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。任务将会被检查,看看是否正确地运行了。

KITCHEN 允许你批量使用由CHEF设计的任务 (例如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。

ENCR 此脚本是用来加密连接数据库密码与集群时使用的密码


//
ETL工具Kettle对PostgreSQL操作的基本介绍 - Jaytse的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/jaytse/article/details/2985977
基本概念

我们常使用Spoon(是Kettle中的一个子项目)进行数据transfer,这里只是自己对下面一些基本概念的理解,具体请自行参见Spoon的文档。

Transform:定义了数据transfer的基本操作流程,通常包括Input, Output和Hop

Job:定义了一组数据transfer的操作流程,可以包括多个Job或transform。

Input:定义了数据流的起点

Output:定义了数据流的终点

Step:是transform的基本构成点,Input和Output都是一种step

DB Connection:定义了数据库连接的名字,通常和Input以及Output配合使用

Start:定义了Job中transfer的起点

Hop:表示Step间数据的流向

SQL脚本:JOB中多个Transform或子JOB之间表示需要执行的SQL脚本


//
kettle设计工具spoon安装问题及解决(Win环境) - zoubf的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/zoubf/article/details/50413173
Kettle是Pentaho的一个组件,主要用于数据库间的数据迁移。
Kettle自己有三个主要组件:Spoon,Kitchen,Pan。其中Spoon是一个图形化的界面。


//
Kettle_百度百科
http://baike.baidu.com/link?url=ui9VRUlzzFwNOUdf9kC6uGgAEu2A-AwB5IXUU6opIpz90MPXrptJXykXEHehOkcNwIXv6VPtmmQF9BcsQo-5J_

//
kettle初探 - wingsless - 博客园
http://www.cnblogs.com/wingsless/p/3187436.html
Kettle是Pentaho的一个组件,主要用于数据库间的数据迁移,到我用过的4.2版,还不支持noSQL,不知道4.4是不是支持了。

//
在Web中集成Kettle - mengtianyalll的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/mengtianyalll/article/details/44243209

//
一个实际项目Java架构设计之ETL(Kettle)部分介绍 - RocChen的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/cpaqyx/article/details/46481793
[图片上传中。。。(1)]

//
可用于Hadoop下的ETL工具——Kettle - Hadoop分布式数据分析平台-炼数成金-Dataguru专业数据分析社区
http://f.dataguru.cn/thread-56182-1-1.html
像Eclipse一样,Kettle也是采用插件模式实现,任何个人或团体可以向其贡献插件代码;目前kettle支持很多中数据源,如:大多数市面上的数据库、文本文件、Excel、XML、Json文件、等等,能够对抽取的数据做排序、分组、合并、行转列、列转行、字段合并和分隔、不同数据源间的连接(如数据库表那样)、数据库文件的导入导出等操作。另外还支持Hadoop上文件的读取和写入,以及HBase的输入输出;其中的TableInput组件还支持Hive数据的读写,真是一款数据整合中不可多得的利器。

//
ETL见解 - 搞怪的索引 - 博客频道 - CSDN.NET
http://blog.csdn.net/perfect_db/article/details/7715454
这时要么用开源的etl工具,要么就是写procedure,但是在用开源的etl工具时要对这个软件有相当的把握,知道有哪些bug,不然在运行的时候忽然出现了问题,再去查资料找原因,严重的话就会涉及到商务的问题吧。其实自己做的第一个项目就是这样的状况,但是为了最后的调度方便,还是结合了procedure和开源的etl工具kettle来共同完成其功能,整体效果还算理想。


//
ETL高级教程kettle - JAVA相关技术 - ITeye技术网站
http://lichao-super.iteye.com/blog/1577166
1,Kettle跨平台使用。
例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:
1)进入到Kettle部署的路径
2)执行 chmod *.sh,将所有shell文件添加可执行权限
3)在Kettle路径下,如果要执行transformation,就运行./pan.sh -file=?.ktr -debug=debug -log=log.log
其中。-file说明你要运行的transformation文件所在的路径;-debug说明日志输出的级别;-log说明日志输出的路径
4)同理,对于job的执行,请将./pan.sh更换成./kitchen.sh,其他部分说明不变。

2,Kettle环境变量使用。
在transformation中,Core Objects-->Job-->Set Variables,可以设置环境变量,对于绝对路径和相对路径的转换很有帮助,Kettle的跨平台很大程度依靠它

3,其它功能的使用。
其它功能包括DB存储过程调用,流查询,值映射,聚合记录等,各位自行摸索

4,Kettle定时功能。
在Job下的start模块,有一个定时功能,可以每日,每周等方式进行定时,对于周期性的ETL,很有帮助。
a.使用资源库(repository)登录时,默认的用户名和密码是admin/admin。
b.当job是存放在资源库(一般资源库都使用数据库)中时,使用Kitchen.bat执行job时,需使用如下的命令行:
Kitchen.bat /rep kettle /user admin /pass admin /job job名
c.当job没有存放在资源库而存放在文件系统时,使用Kitchen.bat执行job时,需使用如下的命令行:
Kitchen.bat /norep /file user-transfer-job.kjb
d.可以使用命令行执行job后,就可以使用windows或linux的任务调度来定时执行任务了
e.如果出现异常语句,
Unexpected error during transformation metadata load
No repository defined!
请按上面的操作排除。

5,Kettle经验之日志。
Kettle对于日志的处理,存在一个BUG,看过上一篇的人或许已经看到了我的留言,Kettle对于日志处理有一个BUG,当日志多于49M(不是50M,也不是49M),Kettle就会自动停止,这一点我在源码里面也没有找到对应的设置和约束,原因还找不到,因为是日志没有写,所以原因也不好跟踪还不知道具体原因。

6,Kettle之效率提升。
Kettle作为一款ETL工具,肯定无法避免遇到效率问题,当很大的数据源输入的时候,就会遇到效率的问题。对此有几个解决办法:
1)数据库端创建索引。对需要进行查询的数据库端字段,创建索引,可以在很大程度上提升查询的效率,最多的时候,我不创建索引,一秒钟平均查询4条记录,创建索引之后,一秒钟查询1300条记录。
2)数据库查询和流查询注意使用环境。因为数据库查询为数据输入端输入一条记录,就对目标表进行一次查询,而流查询则是将目标表读取到内存中,数据输入端输入数据时,对内从进行查询,所以,当输入端为大数据量,而被查询表数据量较小(几百条记录),则可以使用流查询,毕竟将目标表读到内存中,查询的速度会有非常大的提升(内存的读写速度是硬盘的几百倍,再加上数据库自身条件的制约,速度影响会更大)。同理,对于目标表是大数据量,还是建议使用数据库查询,不然的话,一下子几百M的内存被干进去了,还是很恐怖的。
3)谨慎使用javascript脚本,因为javascript本身效率就不高,当你使用js的时候,就要考虑你每一条记录,就要执行一次js所需要的时间了。
4)数据库commit次数,一条记录和一百条记录commit对效率的影响肯定是不一样的。
5)表输入的sql语句的写法。有些人喜欢在表输入的时候,将所有关联都写进去,要么from N多个表,要么in来in去,这样,就要面对我在2)里面说道的问题,需要注意。
6)注意日志输出,例如选择数据库更新方式,而且日志级别是debug,那么后台就会拼命的输出日志,会在很大程度上影响速度,此处一定要注意。

7,常见的调试BUG。
Kettle提供了很多调试的解决办法,但是对于常见的调试BUG还是能避免就避免。
1)路径问题。我最常遇到的问题就是在windows下调试成功,但是部署到UNIX下出问题,忘记将windows下路径变成unix下,经常会出现问题。
2)输出端,数据库插入更新选择不对。输出端,提供了三种数据库输出的办法,数据库输出,插入/更新,更新,对于这三种,各有利弊,如果你知道数据库输出,完全是插入,如果有重复数据,则会报错;插入更新和更新,因为更新数据时,后台输出很多日志,会导致效率很低。


//
ETL工具Kettle对PostgreSQL操作的基本介绍 - Jaytse的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/jaytse/article/details/2985977
Bug修改

在Kettle中,在处理PostgreSQL数据时候,我们目前发现2个会对工作产生影响的Bug。其一是对bytea数据的处理,其二是对boolean数据的处理。我们可以简单对它的源码进行修改,使它可以运行起来。

推荐阅读更多精彩内容