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,再通過執行進行新建

  轉換表配置如下:

  

  其他日志表類似

  監控表需要開啟監控:

  

   日志簡要介紹如下:

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM