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 的命令行执行程序。实际上,Kitchen 和 Pan 只是在 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 版本。例如Kettle 8.2.0 版本需要 JDK 1.8的支持。这样就能在 Spoon 的图形界面下进行设计开发调试,然后用命令行执行保存的转换或作业(.ktr 或 .kjb 文件),秉承 Java 程序一次编译到处运行的理念。

(1)命令行参数

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

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

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

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

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

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

参数名

参数值

作用

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

作业名

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

listjobs

列出资源库里的所有作业

表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 集群

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值