1 Kettle的基本概念
一个数据抽取过程,主要包括创建一个作业(Job),每个作业由一个或多个作业项(Job Entry)和连接作业项的作业跳(Job Hop)组成。每个作业项可以是一个转换(Transformation)或是另一个作业。一个转换由一个或多个步骤(Step)和连接步骤的跳(Hop)组成。
转换主要用于数据的抽取(Extraction)、转换(Transformation)以及加载(Load),比如读取文件、过滤输出行、数据清洗或加载到数据库等步骤。一个转换包含一个或多个步骤,每个步骤都是单独的线程,当启动转换时,所有步骤的线程几乎并行执行。步骤之间的数据以数据流方式传递。所有的步骤都会从它们的输入跳中读取数据,并把处理过的数据写到输出跳,直到输入跳里不再有数据就终止步骤的运行;当所有步骤都终止了,整个转换就终止了。由于转换里的步骤依赖前一个步骤获取数据,因此转换里不能有循环。
相较于转换,作业是更加高级的操作。作业由一个或多个作业项(作业或转换)组成。所有的作业项是以某种自定义的顺序串行执行的。作业项之间可以传递一个包含了数据行的结果对象。当一个作业项执行完成后,再传递结果对象给下一个作业项。作业里可以有循环。
跳是步骤之间带箭头的连接线,它定义了一个单向通道,用于连接两个步骤,实现将数据从一个步骤(写入数据到行集)流向另一个步骤(从行集中读取数据)。跳是两个步骤之间的被称为“行集”(Row Set)的数据行缓存(可以在转换设置中定义行集大小)。若行集满了,则向行集写数据的步骤将停止写入,直到行集里又有空间。若行集空了,则从行集读取数据的步骤就会停止读取,直到行集里又有可读取的数据行。跳对于向行集写入数据的步骤来说是输出跳,一个步骤可以拥有多个输出跳;跳对于从行集中读取数据的步骤来说是输入跳。
作业跳是作业项之间带箭头的连接线,它定义了作业的执行路径。
2 Kettle的基本功能
Kettle的基本功能包括转换管理和作业管理。转换管理主要包括输入、输出、转换、应用、流程、脚本、查询、检验、作业、映射和批量加载等功能。作业管理主要包括通用、邮件、文件管理、条件、脚本、批量加载等功能。
3 安装Kettle
在Windows系统中打开浏览器,访问Kettle官网(https://sourceforge.net/projects/pentaho/),下载Kettle安装文件pdi-ce-9.1.0.0-324.zip。
把pdi-ce-9.1.0.0-324.zip解压缩到“D:\”目录下(或者也可以选择一个其他目录,比如“C:\”),会生成一个“data-integration”目录,该目录下就包含了Kettle。在data-integration目录里包含了Spoon的启动文件,即spoon.bat,双击该文件就可以启动Spoon,
4 数据抽取
1 把文本文件导入到Excel文件中
这里给出一个实例,演示如何使用Kettle把文本文件导入到Excel文件中,
具体包括如下步骤: 创建文本文件; 建立转换; 设计转换; 执行转换。
1.创建文本文件
在“D:\”目录下新建一个文本文件studentinfo.txt,其内容如图7-4所示,文件的第1行是字段名称,包括sno、name、sex和age,字段之间用“|”隔开,其余行都是记录,字段之间也是用“|”隔开。
2.建立转换
在Spoon主界面的“主对象树”栏目中,在“转换”上面单击鼠标右键,在弹出的菜单中点击“新建”。点击Spoon主界面左上角的“保存”图标,把这个转换保存到某个路径下并且名称为“text_to_excel”。
3.设计转换
在“核心对象”栏目中,在“输入”控件里把“文本文件输入”拖到右侧设计区域,然后在“输出”控件里把“Excel输出”拖到右侧设计区域,然后为这两个控件建立连线
放置文本文件输入和Excel输出两个控件
这里的连线就是前文介绍过的“跳”。为这两个控件建立连线的方法是,按住键盘上的Shift键,然后用鼠标左键单击“文本文件输入”控件图标,再用鼠标左键单击“Excel输出”控件图标,最后在其他空白区域单击鼠标左键,这样就建立了一条从“文本文件输入”到“Excel输出”的连线。
双击设计区域的“文本文件输入”控件,打开设置界面,点击“文件”选项卡,点击“文件或目录”右侧的“浏览”按钮,把studentinfo.txt文件添加进来,然后点击“增加”按钮,studentinfo.txt文件就会被增加到“选中的文件”中,增加后的效果如图7-8所示。
点击增加,成功添加文件,继续设置内容选项卡,修改分隔符和编码
获取字段
预览记录
双击设计区域的“Excel输出”控件图标,打开设置界面,在“文件”选项卡中,设置“文件名”为“D:\file”。
在“字段”选项卡中,点击界面底部的“获取字段”按钮,成功获取字段以后的效果,
然后把“sno”和“age”字段的“格式”设置为“#”。最后,点击“确定”按钮完成“Excel输出”控件的设置。全部设置完成以后,需要保存设计文件。
4. 执行转换
在转换设计界面中,点击三角形按钮开始执行转换,
在界面中点击“启动”,如果转换执行成功,
,在两个控件图标上都会显示绿色的勾号。
这时,到D盘根目录下就可以看到新生成的文件file.xls,可以使用Excel软件打开file.xls查看内容
这样,就完成了把文本文件导入到excel文件中
5.数据清洗
这里给出一个实例,演示如何使用Kettle实现数据排序,具体包括如下步骤: 创建文本文件; 建立转换; 设计转换; 执行转换。
1.创建文本文件
在“D:\”目录下新建一个文本文件score.txt,文件的第1行是字段名称,包括name和score,字段之间用分号隔开,其余行都是记录,字段之间也是用分号隔开。
2.建立转换
在Spoon主界面的“主对象树”栏目中,在“转换”上面,单击鼠标右键,在弹出的菜单中点击“新建”。点击Spoon主界面左上角的“保存”图标,把这个转换保存到某个路径下并且名称为“sort_data”。
3.设计转换
在“核心对象”栏目中,在“输入”控件里把“文本文件输入”拖到右侧设计区域,然后在“转换”控件里把“排序记录”拖到右侧设计区域,然后为这两个控件建立连线。
双击设计区域的“文本文件输入”控件图标,打开设置界面,点击“文件或目录”右侧的“浏览”按钮,添加文件“D:\score.txt”,然后,点击“增加”按钮,
在“内容”选项卡中,设置分隔符为分号“;”
在“字段”选项卡中,点击“获取字段”按钮,成功获取字段以后的效果
这时,点击界面底部的“预览记录”按钮,就可以预览数据。最后,点击界面底部的“确定”按钮,完成“文本文件输入”控件的设置。
双击设计区域的“排序记录”控件图标,打开设置界面,在“字段名称”下拉列表中选择“score”,在“升序”下拉列表中选择“是”,然后点击“确定”按钮完成设置。全部设置完成以后,需要保存设计文件。
4.执行转换
在转换设计界面中,点击三角形按钮开始执行转换,在弹出的界面中点击“启动”,如果转换执行成功,在两个控件图标上都会显示绿色的勾号。这时,在“执行结果”的“Preview data”选项卡中就可以预览排序后的数据