Kettle资源库、运行方式与日志
kettle资源库
资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中。
资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形式分组管理的,用户可以自定义文件夹名称。
kettle资源库元数据
- 资源库
资源库包括文件资源库、数据库资源库
Kettle 4.0 以后资源库类型可以插件扩展
- XML文件
ktr 转换文件的XML的根节点必须是 <transformation>
kjb 作业XML的根节点是<job>
kettle资源库类型
数据库资源库:
- 把 Kettle 的元数据串行化到数据库中,如 R_TRANSFORMATION 表保存了Kettle 转换的名称、描述等属性。
- 在Spoon 里创建和升级数据库资源库
文件资源库:
在文件的基础上的封装,实现了 org.pentaho.di.repository.Repository 接口。是Kettle 4.0 以后版本里增加的资源库类型。
不使用资源库:
直接保存为ktr或kjb文件。
资源库操作
新建资源库:
kettle7.0后新建方式略有不同,新建资源库在右上角->connect,
选择资源库的几点参考对比:
统一参数管理
像资源库的一些连接信息应该是不能硬编码写死的,所以kettle也提供了kettle.properties文件来进行全局变量的控制。
kettle.properties,文件位于 java 的 user.home 目录下。
找到user.home下的.kettle/kettle.properties
写入变量后,使用${var.name}进行变量读取即可(类似shell的变量形式)
// 使用参数表等情况,暂不赘述
Kettle运行方式
运行方式主要分为:图形化、命令行、API。
图形界面:Spoon
命令行:Pan、Kitchen
API:Kettle Java API 嵌入到其他应用
Spoon
本地运行:前面的都是采用本地运行,直接点击运行按钮进行运行的,不再赘述。 远程:Carte
- Carte 是内嵌 Jetty 的 http server。
- Carte执行命令 carte localhost 8080
需要现在服务器上运行命令,格式为carte ip 端口 (端口可以随意,只要不冲突即可) carte localhost 8080
// 主要命令的位置(未配置PATH需要切到指定目录)
然后在转换的主对象下找到子服务器
// 默认用户名和密码为cluster/cluster
集群方式,暂不介绍
命令行
主要有Pan和Kitchen,但是由于项目都是以作业为主,所以还是Kitchen使用的更多
两种方式的参数列表如下:(直接敲命令kitchen等不带任何参数,则列出帮助)
Pan 参数名列表:
- /rep : 资源库名称
- /user : 资源库用户名
- /pass : 资源库密码
- /trans : 要启动的转换名称
- /dir : 目录(不要忘了前缀 /)
- /file : 要启动的文件名(转换文件)
- /level : 日志级别 (Error, Nothing, Minimal, Basic , Detailed, Debug, Rowlevel)
- /logfile : 要写入的日志文件
- /listdir : 列出资源库里的目录
- /listtrans : 列出指定目录下的转换
- /listrep : 列出可用资源库
- /exprep : 将资源库里的所有对象导出到 XML 文件中
- /norep : 不要将日志写到资源库中
- /safemode : 安全模式下运行: 有额外的检查
- /version : 显示转换的版本,校订和创建日期
- /param : 设置参数,参数格式<NAME>=<VALUE>,例如-param:FOO=bar
- /listparam : 列出转换里已经设置好的参数。
- /maxloglines : 内存中保存日志的最大日志行数
- /maxlogtimeout : 内存中保存日志的最长时间
Kitchen 参数名列表:
- /rep : 资源库名称
- /user : 资源库用户名
- /pass : 资源库密码
- /job : 要启动的作业名称
- /dir : 目录(不要忘了前缀 /)
- /file : 要启动的文件名(转换文件)
- /level : 日志级别 (Error, Nothing, Minimal, Basic , Detailed, Debug, Rowlevel)
- /logfile : 要写入的日志文件
- /listdir : 列出资源库里的目录
- /listjobs : 列出指定目录下的作业
- /listrep : 列出可用资源库
- /exprep : 将资源库里的所有对象导出到 XML 文件中
- /norep : 不要将日志写到资源库中
- /safemode : 安全模式下运行: 有额外的检查
- /version : 显示转换的版本,校订和创建日期
- /param : 设置参数,参数格式<NAME>=<VALUE>,例如-param:FOO=bar
- /listparam : 列出转换里已经设置好的参数
- /export : 把作业依赖的所有资源导出到一个zip 文件里
- /maxloglines : 内存中保存日志的最大日志行数
- /maxlogtimeout : 内存中保存日志的最长时间
日志级别:
- Error: 只记录错误信息
- Nothing: 不记录任何信息,执行效率最高
- Minimal: 记录最少的信息
- Basic: 记录基本信息
- Detailed: 记录详细信息
- Debug: 记录调试信息
- Rowlevel: 转换过程中的每一行都记录下来,日志最详细,执行效率最低
命令格式:/参数名:值 或-参数名=值
新建一个测试作业:
执行作业示例:
./kitchen /rep:r1 /user:admin /pass:admin /job:j1 /dir:/ /logfile:F:/log3.txt // 更多示例,待补充
日志
文件日志位置
通过/logfile在命令行中运行Job时设置 linux中通过管道符进行输出重定向
默认的日志文件保存在 java.io.tmpdir 目录下,文件名类似spoon_xxx.log
图形化界面也有日志输出窗口
日志参数设置
Spoon中通过工具->选项进行部分日志输出窗口设置 kettle.properties中相关参数设置:
KETTLE_MAX_LOG_SIZE_IN_LINE 变量 KETTLE_MAX_LOG_TIMEOUT_IN_MINUTES变量
数据库日志
转换有4个日志表:
- 转换日志表
- 步骤日志表
- 性能日志表
- 日志通道日志表
- 作业日志表
- 作业日志表
- 作业项日志表
- 日志通道日志表
转换的日志设置在:编辑->设置;选择日志(作业同理)
选择数据库连接->如果数据库中没有这个表,则可以点击下面的SQL,再通过执行进行新建,转换表配置如下:
其他日志表类似,监控表需要开启监控:
日志简要介绍如下: