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。Spoon的屏幕截图如图1所示。

安装kettle后,如果打开spoon.bat有闪退现象,请参照以下方法修正

Kettle Spoon.bat 闪退问题解决方案 - 飞向狙沙 - 博客园

解决不了也可以查看日志:logs文件夹下的spoon.log或者打开SpoonBebug.bat,进入调试模式,查看日志文件:SpoonBebug.txt文件。

我遇到的问题:安装了kettle7.1版本,jdk16,但是出现闪退。之后将jdk改为jdk8。spoon.bat正常打开!

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

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

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

(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服务器的多个计算机上并行执行,因此可以分散工作负载。
 

以上参考:
————————————————
版权声明:本文为CSDN博主「wzy0623」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wzy0623/article/details/106327544

一个kettle例子合集的专栏:https://blog.csdn.net/wzy0623/category_9266495.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值