JVM参数
Kettle 8.1默认使用的最大jvm堆内存是2G,执行某些复杂作业可能会出现堆内存溢出错误(OutOfMemoryError
),此时就需要调正Kettle的jvm参数。 依旧是data-integration
目录下的Spoon.bat
文件,找到
这一行,适当增大”-Xmx
“参数值即可。 如果出现了栈溢出错误(StackOverFlowError
)(一般不会出现),则需要再增加一个参数”-Xss
“,数值需要根据本机内存配置适当填写。 如图所示:
转换流程
Kettle是个ETL工具,转换流程就是主要进行数据转换(T)步骤设计的地方。当然也包含数据源(E)和目标(L)。 新建转换流程的方式有很多,比如左上角 文件 -> 新建 -> 转换
,或者点击欢迎页面WORK图标下的New transforation
,亦可双击左侧主对象树下的转换图标
,又可按快捷键Ctrl + N
。 转换流程设计页面左侧核心对象
下面是一个个的分类模块,每个分类下面又有许多个功能不同的组件,鼠标按住左侧组件图标拖拽到右侧流程设计面板即可增加一个步骤。
步骤之间需要使用箭头连接,箭头方向表示步骤流向,按住Shift键的同时鼠标点住步骤图标向外拉即可拉出一条箭头(按住鼠标中键也可拉出箭头),将箭头拉向下一个步骤,即可形成一个简单的转换流程:
需要注意的是步骤之间箭头的颜色,深色表示连接状态,浅色表示断开状态。比如下面这个转换流程,表输出步骤与上一步骤是断开连接的,执行流程的时候执行到表输出这一步骤后就不会再往下执行了。单击箭头可以调整连接状态。
Ctrl + S
保存,将保存为ktr
后缀的文件。
作业流程
作业流程,即是对转换流程进行调度的。除了调度转换流程还可以做一些其他的工作,比如文件管理、条件判断、脚本执行等等,也可以调度其他作业流程。 新建作业流程与转换流程类似,快捷键是Ctrl + Alt + N
。核心组件在通用
分类下,一个作业流程必须包含START
组件,可以没有成功
组件。作业流程中可以嵌套转换流程和作业流程:
与转换流程不同的是,除了步骤之间有连接状态
(箭头颜色深浅),还有连接条件
(箭头上的图标,一共三种)。上图的这个作业中包含了所有连接条件:
小锁图标,表示不管上一步骤执行结果如何,都执行下一个步骤;
红叉图标,表示只有上一步骤执行出错或者返回FALSE,才执行下一步骤;
绿勾图标,表示只有上一步骤执行成功或者返回TRUE,才执行下一步骤。
单击连接条件图标可以调整连接条件,START
步骤与下一步骤之间的连接条件不可修改。 START
组件标识着工作流的开始,也是配置定时任务的地方:
定时调度功能还是很灵活的,只不过需要一直保持Spoon处于启动状态,一旦Spoon窗口被误关闭,定时任务就无效了,所以一般不使用Kettle自带的这个调度器。比较常用的是使用操作系统的定时任务功能,比如Windows的计划任务,或者可以编写Java程序进行调度 Ctrl + S
保存,将保存为kjb
后缀的文件。
创建数据库连接
新建一个作业或者转换,可以在主对象树
下面看到DB连接
选项,双击DB连接
或者右键菜单
点击新建
,打开创建数据库连接窗口。
选择数据库类型以及连接方式(默认JDBC),填写相应配置:
配置完成后点击测试
按钮测试一下数据库连接,如下图所示表示配置成功,然后就可以点击确认
保存数据库连接了,新建的数据库连接会显示在DB连接
分组下:
共享数据库连接
新建的数据库连接只能在当前转换或者作业中使用,好在Kettle提供了数据库连接共享功能,在数据库连接名称
上鼠标右键,点击共享
即可将该数据库连接共享给其他转换或者作业使用,共享成功后,数据库连接名称将加粗显示:
另外,数据库连接共享后还会在.kettle
目录下生成一个shared.xml
文件,文件中记录着被共享的数据库连接信息:
警告:如果数据库名为中文,则不能共享该连接,否则会报出异常,影响Spoon的正常使用:
如果手误已经发生这种情况,则可以使用记事本打开.kettle
目录下的shared.xml
文件,手动删除掉database标签值为中文的connection标签即可:
数据库连接参数
创建数据库连接的时候还可以配置一些连接参数,比如连接MySQL的时候可以添加连接编码:
这种方式可以解决由于编码不一致导致的中文乱码问题(上图的这个参数配置的前提是数据库字符集也是UTF8)。