KETTLE的基础使用

JVM参数

Kettle 8.1默认使用的最大jvm堆内存是2G,执行某些复杂作业可能会出现堆内存溢出错误(OutOfMemoryError),此时就需要调正Kettle的jvm参数。 依旧是data-integration目录下的Spoon.bat文件,找到
这一行,适当增大”-Xmx“参数值即可。 如果出现了栈溢出错误(StackOverFlowError)(一般不会出现),则需要再增加一个参数”-Xss“,数值需要根据本机内存配置适当填写。 如图所示:

1559114496566.png

转换流程

Kettle是个ETL工具,转换流程就是主要进行数据转换(T)步骤设计的地方。当然也包含数据源(E)和目标(L)。 新建转换流程的方式有很多,比如左上角 文件 -> 新建 -> 转换 ,或者点击欢迎页面WORK图标下的New transforation,亦可双击左侧主对象树下的转换图标,又可按快捷键Ctrl + N。 转换流程设计页面左侧核心对象下面是一个个的分类模块,每个分类下面又有许多个功能不同的组件,鼠标按住左侧组件图标拖拽到右侧流程设计面板即可增加一个步骤。

Typora_ckur485Vyl.png

步骤之间需要使用箭头连接,箭头方向表示步骤流向,按住Shift键的同时鼠标点住步骤图标向外拉即可拉出一条箭头(按住鼠标中键也可拉出箭头),将箭头拉向下一个步骤,即可形成一个简单的转换流程:


4OpHJBdx8M.gif

需要注意的是步骤之间箭头的颜色,深色表示连接状态,浅色表示断开状态。比如下面这个转换流程,表输出步骤与上一步骤是断开连接的,执行流程的时候执行到表输出这一步骤后就不会再往下执行了。单击箭头可以调整连接状态。

Gv0TiTIbM7.gif

Ctrl + S保存,将保存为ktr后缀的文件。

作业流程

作业流程,即是对转换流程进行调度的。除了调度转换流程还可以做一些其他的工作,比如文件管理、条件判断、脚本执行等等,也可以调度其他作业流程。 新建作业流程与转换流程类似,快捷键是Ctrl + Alt + N。核心组件在通用分类下,一个作业流程必须包含START组件,可以没有成功组件。作业流程中可以嵌套转换流程和作业流程:

GQwYqhBqMW.gif

与转换流程不同的是,除了步骤之间有连接状态(箭头颜色深浅),还有连接条件(箭头上的图标,一共三种)。上图的这个作业中包含了所有连接条件:

  • 小锁图标,表示不管上一步骤执行结果如何,都执行下一个步骤;

  • 红叉图标,表示只有上一步骤执行出错或者返回FALSE,才执行下一步骤;

  • 绿勾图标,表示只有上一步骤执行成功或者返回TRUE,才执行下一步骤。

单击连接条件图标可以调整连接条件,START步骤与下一步骤之间的连接条件不可修改。 START组件标识着工作流的开始,也是配置定时任务的地方:

img

定时调度功能还是很灵活的,只不过需要一直保持Spoon处于启动状态,一旦Spoon窗口被误关闭,定时任务就无效了,所以一般不使用Kettle自带的这个调度器。比较常用的是使用操作系统的定时任务功能,比如Windows的计划任务,或者可以编写Java程序进行调度 Ctrl + S保存,将保存为kjb后缀的文件。

创建数据库连接

新建一个作业或者转换,可以在主对象树下面看到DB连接选项,双击DB连接或者右键菜单点击新建,打开创建数据库连接窗口。

Typora_qqZkTurOEV.png

选择数据库类型以及连接方式(默认JDBC),填写相应配置:


img

配置完成后点击测试按钮测试一下数据库连接,如下图所示表示配置成功,然后就可以点击确认保存数据库连接了,新建的数据库连接会显示在DB连接分组下:

img

共享数据库连接

新建的数据库连接只能在当前转换或者作业中使用,好在Kettle提供了数据库连接共享功能,在数据库连接名称上鼠标右键,点击共享即可将该数据库连接共享给其他转换或者作业使用,共享成功后,数据库连接名称将加粗显示:

img

另外,数据库连接共享后还会在.kettle目录下生成一个shared.xml文件,文件中记录着被共享的数据库连接信息:

img

警告:如果数据库名为中文,则不能共享该连接,否则会报出异常,影响Spoon的正常使用:

img

如果手误已经发生这种情况,则可以使用记事本打开.kettle目录下的shared.xml文件,手动删除掉database标签值为中文的connection标签即可:

Typora_Q2f8v9uJHu.png

数据库连接参数

创建数据库连接的时候还可以配置一些连接参数,比如连接MySQL的时候可以添加连接编码:

img

这种方式可以解决由于编码不一致导致的中文乱码问题(上图的这个参数配置的前提是数据库字符集也是UTF8)。

你可能感兴趣的:(KETTLE的基础使用)