Kettle 学习笔记

一直用SSIS做ETL,越来越感觉这玩意不是亲生的.因此萌生换ETL工具的想法,不过Kettle社区版没什么调度系统,貌似错误处理也不是很方便,且先了解吧. 本文简略的记录了整个软件的使用流程.

开始

Kettle 的几个子程序的功能和启动方式

Spoon.bat: 图形界面方式启动作业和转换设计器。
Pan.bat: 命令行方式执行转换。
Kitchen.bat: 命令行方式执行作业。
Carte.bat: 启动web服务,用于 Kettle 的远程运行或集群运行。
Encr.bat: 密码加密

资源库

资源库就是放置Metadata的地方了. 点CTRL -R可以显示资源库连接的窗口,没有的新建一个就行. 看了下论坛,都推荐用文件资源库 (使用了org.pentaho.di.repository.Repository 接口)

按 CTRL –E可以浏览所连接的资源库中的Metadata


做的作业,转换,连接 等保存后,直接可以在资源库中读取使用.

菜单项

这里可以设置kettle运行时候的一些默认参数

这里也是类似

简单示例

在Input里面拖个 Dtata Grid,在Output里面拖个 Text file output

Data Grid里面输入部分数据

在Data Grid组件上悬停,然后点击红框按钮连接Text file output组件


双击 Text file output ,然后在Fields 页面点击Get Fields.获取字段,然后在File页中选择输出路径

运行

最后点击运行按钮

在弹出来的对话框中直接点运行.

传输方式

再托一个 Table output.连接的时候问你传输方式,根据需要选一个即可

也可以右击组件,选择传送方式

查看输入/输出的Metadata

右击Text file output ,选择 Show input fields 可以查看输入的Metadata

双击Text file output,选择连接,指定表名,然后复选 Specify database fields , 然后点击Get fields按钮

此时我们数据库中并没有testa这张表,此时点击界面上的,SQL生成按钮,会为我们自动生成建表语句

错误输出

再拖一个文本输出对象 Text file output 2 .然后连接 Table output , 连接选项,选择 Error handling of step

随后右击Table output 点击 Define error handing


设定相关字段名,此时改一下数据,如数据类型等,执行后就可以看到效果了.

常用控件

Select values

可以选择字段,设置数值格式等,不需要的删掉

Add constants

增加常量字段

Generate random value

生成随机数,如果一想要一次生成多行数据,则右击选择,Change number of copies to start.(注意这里是生成多份哦.很可怕)

Filter rows

过滤记录,不符合条件的扔掉,符合的输出

Calculator

计算器.Calculation 里面有很多选项,选中以后指定对应字段即可

Merge Join

表格连接

Join Rows (cartesian product) 笛卡尔输出

Table input

执行Select 语句,从数据库中获取数据.可以通过?或者${var}方式使用变量. 实际演示如下:

0x01 拖一个Get System Info 组件,然后设置一个变量,类型是命令行参数1

0x02 Table input 写好语句后,勾选 Replace variables in script? ,然后在 Insert data from step 中选插入数据的步骤.(此处选择前面创建的Get System Info)

注: 其中 Enable lazy conversion 选项是提升性能用的. 如果使用了,获取数据不做数据转换.用到的时候再转 (延迟转换用 rs.getBytes(int) 某则用 rs.getString(int))

0x03 在之个性步骤指定参数,就可以执行看到效果了.

执行

远程执行

远程执行需要执行Carte,他内嵌Jetty的http server .

0x01 执行命令,启动http server
Carte 192.168.1.10 2333

0x02 在项目中新增子服务器

用户名密码都是cluster, 如果要修改可以至C:\data-integration\pwd\kettle.pwd 修改

0x03 执行

选则远程执行,然后选择我们刚才建立的服务器即可

群集

通过上面的步骤,我们可以多创建一台服务器.然后组合起来做成群集.其中有一台要设置为Master

0x01 建立群集

0x02 使用群集

右击组件,然后选择Clusterings,选择刚才创建群集,

如果有组件使用了群集,那么执行的时候默认群集这个选项就选中了

命令行执行

参数值格式  /参数名:值 或 -参数名=值  (建议第一种)

0x01 新建一个作业

0x02 通过命令行执行

资源库名称 ResConn,作业名称job ,路径在根目录下,其实不写也可以,日志文件 log.txt,日志级别 basic (日志默认保存在 java.io.tmpdir的临时目录中文件名类似spoon_XXX.log)

.\Kitchen.bat /rep:ResConn /job:job /dir:/ /logfile:c:/log.txt /level:basic

另外可以直接把job依赖的文件导出成 zip,然后直接执行zip文件

kitchen /file:c:/job1.kjb /export:c:/a.zip
kitchen.bat /file:”zip:file:///c:/a.zip!job1.kjb”

时间: 2024-10-13 23:19:17

Kettle 学习笔记的相关文章

Kettle学习笔记(七)

好久好久没有写博客了,发现再不写博客我都快忘了我有这个博客了!好了,不说废话了. 最近项目使用kettle的地方比较多,鉴于项目优化的思考决定使用jndi来为kettle脚本设置数据源.这样不仅可以控制连接数,而且可以减少大量的数据库配置,那么我们怎么样才能实现在Web项目中调度配置了jndi的kettle脚本呢?先留下一个伏笔,我们来讲一下kettle支持的jndi. 对了忘了提一句,从笔记七开始kettle的版本升级为5.x.5.x提供很多新的类和组件功能.很好的支持了项目.如果在图形界面上

<老友记>学习笔记

这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的情路坎坷,事业成败和生活中的喜怒哀乐,无时无刻不牵动着彼此的心,而正是正平凡的点点滴滴,却成为最令人感动与留恋的东西. 人物:1.瑞秋•格林(RACHEL GREENE)由珍妮佛•安妮斯顿(Jennifer Aniston)扮演 瑞秋是莫妮卡的高中同学,在与牙医未婚夫的婚礼上脱逃至莫妮卡处. 2.罗

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl