kettle学习笔记(三)——kettle资源库、运行方式与日志
一、kettle资源库
资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中。
资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形式分组管理的,用户可以自定义文件夹名称。
1.ketle资源库元数据
• 资源库
资源库包括文件资源库、数据库资源库
Kettle 4.0 以后资源库类型可以插件扩展
• XML 文件
.ktr 转换文件的XML的根节点必须是 <transformation>
. kjb 作业XML的根节点是<job>
2.kettle资源库类型
数据库资源库:
• 把 Kettle 的元数据串行化到数据库中,如 R_TRANSFORMATION 表保
存了Kettle 转换的名称、描述等属性。
• 在Spoon 里创建和升级数据库资源库
文件资源库:
在文件的基础上的封装,实现了 org.pentaho.di.repository.Repository 接口。
是Kettle 4.0 以后版本里增加的资源库类型
不使用资源库:
直接保存为ktr 或 kjb 文件。
3.资源库操作
新建资源库:
kettle7.0后新建方式略有不同,新建资源库在右上角->connect,
详细新建图文步骤,参考:https://blog.csdn.net/m0_37979608/article/details/77096201
如果缺少驱动,则将mysql-connector这个Jar放到kettle的lib目录下即可(mvn库中有)
使用默认的admin/admin即可登陆到资源库!
如果使用中文进行了资源库命名,将会出现资源库无法新建的问题。解决方案,参考:https://blog.csdn.net/liuwenbiao1203/article/details/77579436
导入/导出资源库:
导航栏->工具->导入/导出资源库,或者探索资源库进行指定目录的导出,导出为.xml文件即可!
资源库管理:
kettle新版管理也在右上角:
选择资源库的几点参考对比:
4.统一参数管理
像资源库的一些连接信息应该是不能硬编码写死的,所以kettle也提供了kettle.properties文件来进行全局变量的控制
kettle.properties,文件位于 java 的 user.home 目录下。(通过java SystemProp运行class文件可以查看到)
cafe babe 0000 0031 0023 0a00 0800 130a 0014 0015 0900 1400 160a 0017 0018 0700 0d0a 0005 0013 0a00 0500 1907 001a 0100 063c 696e 6974 3e01 0003 2829 5601 0004 436f 6465 0100 0f4c 696e 654e 756d 6265 7254 6162 6c65 0100 0a53 7973 7465 6d50 726f 7001 0005 7072 696e 7401 0004 6d61 696e 0100 1628 5b4c 6a61 7661 2f6c 616e 672f 5374 7269 6e67 3b29 5601 000a 536f 7572 6365 4669 6c65 0100 0f53 7973 7465 6d50 726f 702e 6a61 7661 0c00 0900 0a07 001b 0c00 1c00 1d0c 001e 001f 0700 200c 0021 0022 0c00 0e00 0a01 0010 6a61 7661 2f6c 616e 672f 4f62 6a65 6374 0100 106a 6176 612f 6c61 6e67 2f53 7973 7465 6d01 000d 6765 7450 726f 7065 7274 6965 7301 0018 2829 4c6a 6176 612f 7574 696c 2f50 726f 7065 7274 6965 733b 0100 036f 7574 0100 154c 6a61 7661 2f69 6f2f 5072 696e 7453 7472 6561 6d3b 0100 146a 6176 612f 7574 696c 2f50 726f 7065 7274 6965 7301 0004 6c69 7374 0100 1828 4c6a 6176 612f 696f 2f50 7269 6e74 5374 7265 616d 3b29 5600 2100 0500 0800 0000 0000 0400 0100 0900 0a00 0100 0b00 0000 1d00 0100 0100 0000 052a b700 01b1 0000 0001 000c 0000 0006 0001 0000 0005 0001 000d 000a 0001 000b 0000 0019 0000 0001 0000 0001 b100 0000 0100 0c00 0000 0600 0100 0000 0a00 0100 0e00 0a00 0100 0b00 0000 2c00 0200 0200 0000 0cb8 0002 4c2b b200 03b6 0004 b100 0000 0100 0c00 0000 0e00 0300 0000 0f00 0400 1000 0b00 1200 0900 0f00 1000 0100 0b00 0000 2d00 0200 0200 0000 0dbb 0005 59b7 0006 4c2b b600 07b1 0000 0001 000c 0000 000e 0003 0000 0016 0008 0017 000c 0018 0001 0011 0000 0002 0012
// Decompiled by DJ v3.7.7.81 Copyright 2004 Atanas Neshkov Date: 2014-8-18 15:05:00 // Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: SystemProp.java import java.util.Properties; public class SystemProp { public SystemProp() { } public void SystemProp() { } public void print() { Properties properties = System.getProperties(); properties.list(System.out); } public static void main(String args[]) { SystemProp systemprop = new SystemProp(); systemprop.print(); } }
找到user.home下的.kettle/kettle.properties
写入变量后,使用${var.name}进行变量读取即可(类似shell的变量形式)
kettle内置变量,参考:https://blog.csdn.net/qq_22073849/article/details/70139584
// 使用参数表等情况,暂不赘述
二、kettle运行方式
运行方式主要分为:图形化、命令行、API
图形界面:Spoon
命令行:Pan、Kitchen
API:Kettle Java API 嵌入到其他应用
1.Spoon
本地运行:前面的都是采用本地运行,直接点击运行按钮进行运行的,不再赘述
远程:Carte,
• Carte 是内嵌 Jetty 的 http server。
• Carte执行命令 carte localhost 8080
需要现在服务器上运行命令,格式为carte ip 端口 (端口可以随意,只要不冲突即可)
carte localhost 8080
// 主要命令的位置(未配置PATH需要切到指定目录)
然后在转换的主对象下找到子服务器
// 默认用户名和密码为cluster/cluster
集群方式,暂不介绍
2.命令行
主要有Pan和Kitchen,但是由于项目都是以作业为主,所以还是Kitchen使用的更多
两种方式的参数列表如下:(直接敲命令kitchen等不带任何参数,则列出帮助)
参数名列表: /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:内存中保存日志的最长时间
/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
// 更多示例,待补充
三、日志
1.文件日志位置
通过/logfile在命令行中运行Job时设置
linux中通过管道符进行输出重定向
默认的日志文件保存在 java.io.tmpdir 目录下,文件名类似spoon_xxx.log
图形化界面也有日志输出窗口
2.日志参数设置
Spoon中通过工具->选项进行部分日志输出窗口设置
kettle.properties中相关参数设置:
KETTLE_MAX_LOG_SIZE_IN_LINE 变量
KETTLE_MAX_LOG_TIMEOUT_IN_MINUTES变量
3.数据库日志
转换有4个日志表:
• 转换日志表
• 步骤日志表
• 性能日志表
• 日志通道日志表
作业日志表:
• 作业日志表
• 作业项日志表
• 日志通道日志表
转换的日志设置在:编辑->设置;选择日志(作业同理)
选择数据库连接->如果数据库中没有这个表,则可以点击下面的SQL,再通过执行进行新建
转换表配置如下:
其他日志表类似
监控表需要开启监控:
日志简要介绍如下: