Kettle的使用基础手册_第1页
Kettle的使用基础手册_第2页
Kettle的使用基础手册_第3页
Kettle的使用基础手册_第4页
Kettle的使用基础手册_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Kettle使用基础

1.什么是ETL

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、

转置(transform),加载(load)至目的端的过程。通俗点讲就是一大堆数据,经过ETL工

具处理之后,转换成你需要的。

2.ETL主流的工具有哪些

•OWB(OracleWarehouseBuilder)

•ODI(OracleDataIntegrator)

•InformaticPowerCenter(Informatica公司)

•RepositoryExplorer

•AICIoudETL

•Kettle

3.Kettle简要介绍

•Kettle是•款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运

行,绿色无需安装,数据抽取高效稳定。

•Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,

然后以一种指定的格式流出。

•Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化

的用户环境来描述你想做什么,而不是你想怎么做。

•Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基

础转换,job则完成整个工作流的控制。

•Kettle家族目前包括4个产品:SpoonPan、CHEF、Kitcheno

1.Spoon:一个图形用户界面,用来运行transformation(转换)和job(任务),其

^transformation是用Pan工具来运行,任务是用Kitchen来运行°

2.Pan:一个数据转换引擎,主要用来执行数据源读取,操作和写入数据等等功能。

3.Kitchen:一个运行任务(利用XML或数据资源库描述)的工具。

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

•我们主要介绍的就是kettle中spoon这款产品应用。

4.Kettle常见用途及特点

Kettle是一款非常灵活的产品,可以帮用户做很多事,包括:

>不同数据库或应用之间的数据迁移。

>可以充分利用云、齐群、并行处理向数据库中插入大数据集。

>复杂的数据清洗。

>支持Hadoop(非关系型数据库)功能,包括hadoop工作计划和执行,简单hadoop

mapreduce设计。

Kettle作为一款开源产品,有其本身的特点,包括:

>安全简单,只需要配置jdk环境,然后将下载的文件解压即可

>纯java实现,可以跨平台应用

>数据处理效率非常高,平均可以到达4000条/秒以上。

>使用简单,提供界面组件的形式,用户只需要拖动页面上面的组件,根据自己的思

路进行组合即可。因此对于了解计算机而非开发人员,也可以使用此工具进行数据

处理。

>支持插件,用户可以自己扩充功能。

>企业数据集成服务,提供包括job和转换的历史版本管理以及安全的集成、计划及

内容管理。

>基于流的引擎架构为我们处理大数据量提供了可能性。

5.Kettle的安装

•要运行kettle工具必须安装Sun公司的JAVA运行环境,kettle4.2.0需要运行java1.6

或者更高版本,Kettle的卜.载可以到http:〃/取得最新版本°kettle

不需要安装,安装好java环境后,在操作系统环境变量path中配置jre路径,把kettle

工具压缩包解压后可直接使用。

•要注意的是如果您的系统是64位,那么对应的jdk版本也要是64位,否则将无法

运行kettle。而kettle本身已经做到windows与linux、32位与64位兼容。

6.运行Spoon

•找到解压后的这个目录pdi-ce-4.4.0-stable\data-integration

•下面是在不同的平台上运行Spoon所支持的脚本:Spoon.bat:在windows平台运行

SpoonoSpoon.sh:在Linux、AppleOSX、Solaris平台运行Spcon。

7.资源库介绍

•资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在

资源库中。资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形

式分组管理的,用户可以自定义文件夹名称。资源库有两种形式:

•一、Kettledatabaserepository,即保存在各种常见的数据库资源库类型,用户通过

用户名/密码来访问资源库中的资源,默认的用户名/密码是admin/adminguest/guest

•二、Kettlefilerepository,保存在服务器硬盘文件夹内的资源库类型,此类型的资源

库无需用户进行登录,直接进行操作。

8.创建资源库

•在此我以文件资源库为例,给大家介绍一下如何创建文件资源库。在上图中点击创

建文件资源的栏目。在basedirectory对应的栏目。

•点击确定,再点击。k将进入到spoon的主界面,他是一个图形化的操作界面,用起

来非常的简单。主界面如下图:

•Spoon(jftWXWJ

文件MWBT・・l,停於

”口Z・XM・O・QP■■・<*1—r»twX“・

9.转换和任务介绍

•一、转换转换其实就是一个数据清洗的过程,在转换过程中包含的主要元素有:

1.输入(excel、文本、数据库、xmkcvs等输入)

2.输出(excel、文本、数据库、xmkcvs等输入)

3.转换(字符处理、添加字段、值映射、字段拆分、字段选择等)

•二、任务就是类似与。rade中的job,我们只要将任务关联到转换,然后设置任务

的执行情况,这样spoon就可以进行自动化处理了。

10.转换

10.1.输入

输入

CSVfile

型cub

DataGrid

Emailmessagesinput

1Excel输入

Fixedfileinput

$

Generaterandomcreditcard

Generaterandomvalue

GetdatafromXML

GetFileNames

GetFilesRowsCount

Getrepositorynames

-GetSubFoldernames

Gettablenames

JGoogleAnalytics

QGZIPCSVInput

QHL7Input

IJsonInput

TDAPTnpn♦

LDIFInput

1Loadfilecontentinmemory

2MicrosoftAccessInput

3MondrianInput

4OLAPInput

PropertyInput

RSSInput

:S3CSV输入

SalesforceInput

6SAPInput

SASInput

XBase输入

XMLInputStream6tAX)

2YamiInput

寸木卡性蛤入

如上图,kettle可以支持很多方式的输入,但这里主要讲解一下几个常用的输入,其它

输入大同小异。

>文本输入

1)■文本文件输入将比图标拖到右边空白处,双击此图标将弹出下面这个界面,

按下面四个步骤进行配置,即可将文本文件输入。

[aw/

A表输入

表输入是指以其它数据库为数据源,再对这叱数据源的数据进行清洗.将变表输入

拖入到右边空白处,对于表输入可以分为下面几个步骤:

1)查看是否将输入表的数据驱动包放到

pdi-ce-4.4.0-stable\data-integration\libext\JDBC这个目录下面,如果没有,则需要下

载对应数据库的驱动包到此目录下面。

>Excel输入

Excel导入,是以excel作为数据源,通过kettle数据处理后,导出到其它存储格式中。

将&Excel输入拖入到右边空白处,并双击,得到的结果如下图:

因Excel*人

Addslutt(t)[17京*excel文|

文伸,工作取内gt*快处理人心肉衣耽麦头f'SL

…I

s»\长反去除空格类as格式苜而符号小数分蛆

虹所铀士中教职工花名册20kliStringng*

Stringnone

—“SFtErinBenone

3、

[喉9)I[取清(C)]

10.2.输出

输出就是源输入的目的地,最后我们可以将数据输出到文件、数据库表、json格式输出

等等。支持的输出有:

日。输出

AutomaticDocumentationOutput

/Cube输出

@Jsonoutput

期LDAPOutput

#MicrosoftAccessOutput

MicrosoftExcelOutput

用JMicrosoftExcelWriter

CPentahoReportingOutput

步PropertiesOutput

S)RSSOutput

包SalesforceDelete

私SalesforceInsert

&SalesforceUpdate

&SalesforceUpsert

SQLFileOutput

Synchronizeaftermerge

况XM删*

o/更新

…c新

L.出

由于输出与输入具有相似性,所以在这里就不介绍具体的用法了。

10.3.连接

连接主要的用法,将不同的数据源的数据进行合并,可以大大的降低异构系统的差异性,

给我们数据清洗带来极大的方便。

>Merge

连接字段#连接字段

1

“第一个步骤”选择导入的“输入表”或“输入文件”

“第二个步骤”选择导入的“输入表”或“输入文件”

“连接类型”是内连接外连接做连接有连接。

安得连接字段]I获得连接字段

[确定Q)]|取消©]

“获得连接字段”是根据什么字段进行连接,结果和数据库的连接结果一样,(如果结

果多了,可能是连接的字段那边有几个样的行是相同的)

>SortedMerge(储存合并)

把两个表一样的列,合并到一起(一样的列他自己就接到后边了,不用去设置,他根据你

的字段名自己去找),输出时候可以输出多出来的字段,一个表的字段与

另一个表的字段内容接到一起时候,输出列的没有同名的话,输出null;

reFere;name;code;method

22;22

23;23

44

55;55

66;66

77;77

88;88

99;99

1();1010;10

50;1;1;1

原图1;

reFere;name;code;method

2222

2323

4444

5555

6666

7777

8888

9999

10;1010;10

50;1;1;1

原图2;

b*eFere;nanecode;method

02:020202

02;030203

02;020202

02;030203

04;040404

04;040404

05;050565

05;050505

06;060606

06;060606

07;070707

07;070707

08;080808

08;080808

09;090909

09;090909

10;101010

10;101010

50;010101

结果:50;010101

文本文件输入2

Fi<14»

Asctndinc

reftrt

Fieldname”哪个字段排序。

文本输出设置

文本文件侯出口回向

步骤名标—a

文件内容物

,名林类型格式长度质度货市小数分坦TrimTypeSull

1r«f«r«Integer20不去披空格

2n«*«Integer20本去拉空格

3codeInteger20木去接空格

4nethodInteger20本去拉空格

>合并记录

这个和上边的基本一样,但是效率没上边的高,不同点是,这个合并时候进行比较,会多

出来个字段,并判断数据是否有变更

refere;name;code;method

2222

2323

4444

5555

6666

7777

8888

9999

1("1010;10

(旧的)原图1:50;1;1;1

refere;name;code;method

2222

2323

4444

5555

6666

7777

8888

9999

1(J;101O;10

50;1;1;1

(新的)原图2:70;1;1;1

refere;namecode;method;FlagField

02;02;0202;identical

02;63;0203;identical

04;04;0404;identical

05;05;0505;identical

06;06;0606identical

07;07;07071identical

08;08;0808;identical

09;09;0909;identical|

10;10;101O;identical

50;01;0101identical

70;01;0101;new

结果:

文本文件输入2

■公并行

EME2

关键字段和数据字段试了几个效果一样,有待在深入研究。

>记录关联(笛卡尔输出)

reFere;name;code;method

22;22

23;23

44;,4

55;55

66;66

77;77

88;88

99;99

1();1010;10

原图1:

reFere;name;code;nethod

2;2;2;2

2:3:2:3

4;4;4;4

5;5;5;5

6;6;6;6

7;7;7;7

8;8;8;8

9;9;9;9

10;10;10;10

50;1;1;1

原图2:

reFere;namecode;method

50;01;0101

50;01;0101

50;01;0101

50;01;0101

50;01;0101

50;01;0101

SO;01;0101

50;01;0101

50;01;0101

50;01;0101

50;01;0101

结果:

文本文件输入2

■joinrows□0®

步骤名称

曲目录avaiotnpdir%%

Il刷文件前嫌

确定9)]|取洎©|

“Mainsteptoreadfrom,,这个我测试,选择文件大小小点的文件速度快些。

条件:”可■以加一些输出的条件。

10.4.转换

1•.r-1j.z4USplitfieldtorows\

io.4.i.splitfieldtorows(:-..)(这个的功能就是把一列【必

须是string型的】按标点或字符拆分开,拆分成的生成新的列)原图

id;name

1;sunchao,sishen,moshou

2;sunchaosishen,moshou

|v

结果

|id;name;split_name

1;sunchao,sishen.moshou;sunchao

1;sunchao,sishen,moshou;sishen

1;sunchao,sishen,moshou;moshou

2;sunchao,sishen,moshou;sunchao

2;sunchao,sishen.moshou;sishen

2;sunchao,sishen,moshou;moshou

Includerownuminoutput?|~|Kiwnwnfieldname|Splitnamesplitname♦

ResetRownumateachinputrow?[

"Fieldtosplit”选择要的拆分字段

delimiter"定界符一按什么去拆分这个字段

"newfieldname”拆分出来的字段的名字

10.4.2.去掉重复记录(》去除重复记录)

文件3)

(id;name

11

22

33

44

原图4

“增加计数器到输出”调勾的话时就增加计数器,把字段的重自:的数量输出出来

“计算器字段”给字数器起名

#字段名称忽略大小写

1nameN

“字段名称”选择要去重复的字段,这个输出的原理是选择了就把这•列重复的都去掉,在

这行的别的列不重复的也去掉,增加计数器的话,在后边在多出来一列,显示

去掉的行数的几个

10.4.3.增加常量(口!增加常量)(就是增加一列,列的值是自己给定的,

行数是按别的列的最大行数给出的)

|id;name

1;1

2;2

3:3

原图

idname;test

11;a

22;a

33;a

结果

步骤名称增加常量

*▲名称类型格式长度精确当・・・10进制的祖值

1testString1a

“名称”增加常量的字段名

“类型”得到的结果的类型

“值”增加的常量是什么

10.4.4.增加序列(帝增加序列)(就是加个序列1一一n)

id;name

1;1

2;2

3:3

原图

name;ualuename

1

22

33

步骤名称隔

值的名称valuenaine

使用数据库来生成序列

使用DB来获取sequence?口

数据库连接—|

模式名称

Sequeuee名称S.Qw

使用转换计数器来生成序列

计数器名称可选)

起始值

增长根据

最大值

这个没什么说的我用的都是“使用转换计数器来生成序列”基本都不行调

10.4.5.字段选择

22

3:3

原图"

IDNAME

11

22

33

4

结果

步骤名称

选择和修改、一移除元数据

字段

获取选择的字段

|列映射

包含未指定的列,按名称排序□

“选择和修改”选择你要改名的字段。

“改名成”修改成你想要的名称

这个只能输出你选择了的字段,如果不写name的话出的时候就只能得到id的字段

10.4.6.拆分字段

id;name

1;sunchao/sishen/moshou

原图2;sunchao/sishen/moshou

|id;1;2;4;5

1;sunchao;sishen;noshou;

2;sunchao;sishen;noshou;

结果

步舞名麻:国宾。i

需要折分的字段*9.

分隔符/

TG_________________________________

*新的字段ID移除IS类型长度格式分娼D.CI.UCurr.n<y缺省期蚯格类型

Strine不去撞空格

String木去技68

Striae不去楂空格

Strine不去拉空柘

“需要拆分的字段"你要分的字段

“分隔符”按什么去拆分

«新的手段ID移除ID?类21长精度格分DecimalCuN4去除空格类型

HI..........H”…蟹哂........................................................不去腔格…

22NString不去拍空格

34XString不去掉空格

45NString不去撞空格

“新的字段”你拆分出来的字段给其起个名,拆分出来几个字段就起几个名,(注意:

类型一定要填写,要不会报错)

10.4.7.排序记录(给记录按升序降序排列的)

id;name

1;sunchao/sishen/moshou

2;sunchao/sishen/moshou

原图

id;name

2;sunchao/sishen/moshou

结果1;sunchao/sishen/moshou

步骤名称陶曜R______________________________________________________________

排序目录|阳i。、tmpdirOi1♦[浏览®…

临时文件前频|out

排序缓存大小(内存里存放的记录数)150000伶

未使用内存限值⑹|25HopinfectionUtn:!传

压缩临时文件?金口+沈考?支磐需出4

仅仅传递非重复的记录?(仅仅校验关键字)口Status:Enabled

字段:

字段名称升序大小写敏感

id否否

“仅仅传递非重复的记录”就是去掉这个字段的重复的记录,(只要是这个字段的重复记

录就去掉,同行的不是重

复的也去掉)

字段名称升序大小写破期

id否否

“字段名称”你要排序的字段

“升序”就是你要排序的方式

10.4.8.换转列

groupString

keyInteger

unit_nameString

unitid

下边的列

0USCars1100

1USTrucks1200

2USBoats1300

3USConstruction1400

4USAero1500

5USSpace1600

6USMedical1700

8EMEA0EMEACars2105

9EMEA1EMEATrucks2205

10EMEA2EMEABoats2305

11EMEA3EMEAConstruction2405

12EMEA4EMEAAero2505

13EMEA5EMEASpace2605

14EMEA6EMEAMedical2705

15Asi&0AsiaCars3101

16Asia1AsiaTrucks3201

17Asia2AsiaBoats3301

18Asia3AsiaConstruction3401

19Asia4AsiaAero3501

20Asia5AsiaSpace3601

原图21Asia6AsiaMedical3701

group;Haiel;Kaiel;H)ne2;Haar3;相触;NaneS;H谢;UnitIH;UnitlM;Unit叱Unit匾;UnitWh;UnitiOS;毗M

fisia;AsuCars;AsiaTricks;AsiaBoats;AsiaConstructioi;AsiaHero;isiaSpace;AsiaHedical;BDN101;00113211;BOO;8993W;BOI的II;MSfiUI;HQ聊QI

ElfA;EIUCars;EtfAMs;EKHBoats州AConstructioi;EKAAero:EHEASpace;ENEiMedical;BNC1K;SIN22K;0805;蜩根;腻哪;Q愀也ms

US;U$Urs;USTncts;DSBoats;IISConstructin;U$Hero;l$Space;IKMini;NB11H;㈣2加;姗㈣NtlUt;㈣酒帆1删0881700

步骤名痂F;>wd,non»』iKil

关粳字段ky

构成分蛆的字段:

分蛆字段[与取字段|

1group

目标手段

目存字段Value美援字值类型格式化长度精度c[圆a-诲字段]

Sti

-nr

1ManeOansSui3So

-nr35

2ManelsStio

-nr3S

3Stio

35尧

-nr

4Hane3ftnStio

nr尧

5NonM-AnsSo

ntri

6Nso5-^Sto

nri357

7N,”下-dIno

idte7

8VnitIDOInte70

dG

9VnitIDlItc70

10VnitlDS,-dI0

idnte7

11VnitUGiIt0

-dAe7

12VnitID4iIt0

_dne7

13Un久IDSInt40

1

14UxutlDS.0

“关键字”一般为主见,唯一的。

“分组字段”按什么分组

“目标字段”输出的结果的字段名

wvaluefieldname**把哪列进行转列

“关键字”根据什么去分的(可能是另一个有规律的列去划分的,“目标字段”就包含

这个列的值)

“类型”定义一个输出类型

10.4.9.计算器

p.d;name;code;number

11;12;13;1U

21;22;23;24

31;32;33;34

原图41必力

id;name;code;number;sun

11;12;13;14;36.0

21;22;23;24;66.0

31;32;33;34;96.0

结果41;42;43:44;126.0

字段:

#新字段计篁字段A字段B字段C值类型长度精确度移除

1sunA+B+CidnamecodeNumber否

“新字段”计算后的输出的字段名

“计算”里边写好的算法,选择就行了

“字段a/字段b/字段c”你要操作的字段

“移除”是的话就是删除你计算出来的字段,否的话就能输出。

10.4.10.值映射(当你要对一列进行整理:比如month字段1到12月,你要看每

月属于哪个季度就可以用这个,然后会在表里边多出来1列是你要的)

id1namel;code1;month

1111

2222

3333

4444

5555

6666

7777

8888

9999

1(010;10

11111;11

12;1212;12

原图

id1;name1;code1;month;Q

01;01;0101;1

02;02;0202;1

03;03;0303;1

04;04;0404;2

05;05;0505;2

06;06;0606;2

07;07;0707;3

08;08;0808;3

09;09;0909;3

10;10;1010;4

11;11;1111;4

12;12;1212;4

结果

a

文本文件输出

录/:

oI碓m11。/g~I3I

“使用字段名”就是month

“目标字段名”映射出来的新的字段的名

“源值”就是month要被映射的字段,

“目标值”就是映射出来的值(例子:只要是前边的值是的就映射成1)

10.4.11.numberrange(数字的范围)比较一个字段的数字的范围,在这个范

围的话就在一个新的列,打印出来你定好的结果,如果不在打印出来unkonw,

找不到的打印出来的自己也可以定义是什么。

口d

namel;code1;month

1:

2

3

4

5

6:6:66

7:7:77

8

9

10;1010;10

11;1111;11

12;1212;12

原图

id1;name1;code1;nonth;range

01;0101;01;<、于5

02;0202;92;/、于5

03;0303;03;/、于5

04;0404;04;/、于5

0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论