kettle学习笔记——kettle资源库运行方式与日志

Posted ---江北

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 
SystemProp.class
// 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();
    }
}
SystemProp.jad

    找到user.home下的.kettle/kettle.properties

    写入变量后,使用${var.name}进行变量读取即可(类似shell的变量形式)

    kettle内置变量,参考https://blog.csdn.net/qq_22073849/article/details/70139584

  更多细节,参考:博文1博文2

  // 使用参数表等情况,暂不赘述

 二、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:内存中保存日志的最长时间
Pan
/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:内存中保存日志的最长时间
Kitchen
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,再通过执行进行新建

  转换表配置如下:

  

  其他日志表类似

  监控表需要开启监控:

  

   日志简要介绍如下:

  

 

以上是关于kettle学习笔记——kettle资源库运行方式与日志的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记之kettle基础

kettle5.3 Java调用资源库中的转换报错

kettle学习笔记——kettle流程步骤与应用步骤

kettle作业连接mysql资源库8小时后报错

Kettle资源库-元数据

Kettle 入门笔记1