Kettle工具——Spoon、Kitchen、Pan、Carte

目录

1. Spoon

2. Kitchen和Pan

(1)命令行参数

(2)例子

3. Carte


        Kettle里有不同的工具,用于ETL的不同阶段。主要工具如下:

  • Spoon:图形化工具,用于快速设计和维护复杂的ETL工作流。
  • Kitchen:运行作业的命令行工具。
  • Pan:运行转换的命令行工具。
  • Carte:轻量级的(大概1MB)Web服务器,用来远程执行转换或作业,一个运行有Carte进程的机器可以作为从服务器,从服务器是Kettle集群的一部分。

1. Spoon

        Spoon是Kettle的集成开发环境(IDE)。它基于SWT提供了图形化的用户接口,主要用于ETL的设计。
在Kettle安装目录下,有启动Spoon的脚本。如Windows下的Spoon.bat,类UNIX下的spoon.sh。Windows用户还可以通过执行Kettle.exe启动Spoon。Spoon的屏幕截图如图1所示。

图1

        图1里可以清楚地看到Spoon的主窗口:主窗口上方有一个菜单条,下方是一个左右分隔的应用窗口。右方面板里有多个标签面板,每个标签面板都是一个当前打开的转换或作业。左方面板是一个树状结构步骤或作业项视图。

        右方的工作区又可以分为上下两个部分:上面的部分是画布,可以通过拖拽图标在这里设计作业或转换。图1的当前选中的画布标签里显示了一个设计好的转换。

        设计作业或转换的过程实际就是往画布里添加作业项或转换步骤的图标这么简单,向画布添加图标的方式为,从左侧的树中拖拽。这些作业项和转换步骤通过跳来连接。跳就是从一个作业项/步骤的中心连接到另一个作业项/步骤的一条线。在作业里跳定义的是控制流,在转换里跳定义的是数据流。

        工作区左侧的树有“主对象树”和“核心对象”两个标签,主对象树将当前打开的作业或转换里的所有作业项或步骤以树状结构展现。设计者可以在这里快速地找到某个画布上的步骤、跳或数据库连接等资源。核心对象中包含Kettle中所有可用的作业项或步骤,可以在搜索框中输入文本查找名称匹配的作业项或步骤。

        一些调试作业/转换的工具也集成到了Spoon的图形界面里,设计者可以在IDE里直接调试作业/转换。这些调试功能按钮在画布上方的工具栏里。

        工作区下方的面板是运行结果面板,运行结果面板里除了显示运行结果还显示运行时日志和运行监控。

2. Kitchen和Pan

        作业和转换可以在图形界面里执行,但这只是在开发、测试和调试阶段。在开发完成后,需要部署到实际运行环境中,在部署阶段Spoon就很少用到了。

        部署阶段一般需要通过命令行执行,需要把命令行放到Shell脚本中,并定时调度这个脚本。Kitchen和Pan命令行工具就是用于这个阶段,用于实际的生产环境。

        Kettle的Kitchen和Pan工具是Kettle的命令行执行程序。实际上,Pan和Kitchen只是在Kettle执行引擎上的封装。它们只是解释命令行参数,调用并把这些参数传递给Kettle引擎。

        Kitchen和Pan在概念和用法上都非常相近,这两个命令的参数也基本是一样的。唯一不同的是Kitchen用于执行作业,Pan用于执行转换。在使用命令行执行作业或转换时,需要重点考虑网络传输的性能。Kettle数据流将数据作为本地行集缓存。如果数据源和目标之间需要通过网络传输大量数据,将Kettle部署于源或目标服务器上会极大提升性能。

        Kitchen和Pan都通过脚本的方式启动,在Windows系统下,脚本名称是Kitchen.bat和Pan.bat,在类UNIX系统下,脚本名称是Kitchen.sh和Pan.sh。在执行这些脚本以及Kettle带的其它脚本时,要把Kettle目录切换为控制台的当前目录。类UNIX系统的脚本默认情况下是不能执行的,必须使用chmod目录使脚本可执行。

        Kettle是用Java语言开发的,因此在使用Kettle命令行时需要注意匹配Java版本。例如Kettle8.2.0版本需要JDK 1.8的支持。这样就能在Spoon的图形界面下进行设计开发调试,然后用命令行执行保存的转换或作业(.ktr或.kjb文件),秉承Java程序一次编译到处运行的理念。

(1)命令行参数

        Kitchen和Pan的命令行包含了很多参数,在不使用任何参数的情况下,直接运行Kitchen和Pan会列出所有参数的帮助信息。参数的语法规范如下:

[/-]name [[:=]value]

        参数以斜线(/)或横线(-)开头,后面跟参数名。大部分参数名后面都要有参数值。参数名和参数值之间可以是冒号(:)或等号(=),参数值里如果包含空格,参数值必须用单引号(')或双引号(")引起来。

        作业和转换的命令行参数非常相似,这两个命令的参数可以分为下面几类:

  • 指定作业或转换 
  • 控制日志
  • 指定资源库
  • 列出可用资源库和资源库内容。

        表1列出了Pan和Kitchen共有的命令行参数。

参数名

参数值

作用

norep

 

 

rep

资源库名称

要连接的资源库的名称

user

资源库用户名

要连接的资源库的用户名

pass

资源库用户密码

要连接的资源库的用户密码

listrep

 

显示所有的可用资源库

dir

资源库里的路径

制定资源库路径

listdir

 

列出资源库的所有路径

file

文件名

指定作业或转换所在的文件名

level

Error|Nothing|Basic|Detailed|Debug|Rowlevel

指定日志级别

logfile

日志文件名

指定要写入的日志文件名

version

 

显示Kettle的版本号、build日期

表1

        尽管Kitchen和Pan命令的参数名基本相同,但这两个命令里的dir参数和listdir参数的含义有一些区别。对Kitchen而言,dir和listdir参数列出的是作业的路径,Pan命令里的这两个参数列出的是转换路径。

        除了共有的命令行参数外,Kitchen和Pan自己特定的命令行参数分别见表2、表3。

参数名

参数值

作用

jobs

作业名

指定资源库里的一个作业名

listdir

 

列出资源库里的所有作业

表2

参数名

参数值

作用

trans

转换名

指定资源库里的一个转换名

listtrans

 

表列出资源库里的所有转换

表3

(2)例子

# 列出所有有效参数
Kettle-home> ./kitchen.sh

# 运行一个存储在文件中的作业
Kettle-home> ./kitchen.sh /file:/home/foo/daily_load.kjb

# 运行一个资源库里的作业
Kettle-home> ./kitchen.sh /rep:pdirepo /user:admin /pass:admin /dir:/ /job:daily_load.kjb

# 运行一个存储在文件中的转换
./pan.sh -file:/home/mysql/MongoDB_to_MySQL.ktr

3. Carte

        Carte服务用于执行一个作业,就想Kitchen一样。但和Kitchen不同的是,Carte是一个服务,一直在后台运行,而Kitchen只是运行一个作业就退出。

        当Carte在运行时,一直在某个端口监听HTTP请求。远程机器客户端给Carte发出一个请求,在请求里包含了作业的定义。当Carte接到了这样的请求后,它验证请求并执行请求里的作业。Carte也支持其它几种类型的请求。这些请求用于获取Carte的执行进度、监控信息等。

        Carte是Kettle集群中一个重要的构建快。集群可将单个工作或转换分成几部分,在Carte服务器的多个计算机上并行执行,因此可以分散工作负载。

        关于Carte以及Kettle集群的配置和使用,参见“Pentaho Work with Big Data(八)—— kettle集群

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章