kettle8.0源碼編譯

kettle作為一款開源etl工具,在數據倉庫領域的應用還算是比較廣泛的,做過數倉的朋友應該都知道,在做etl開發的時候,對于參數變量的引用是時常出現的場景,對于一些公共的變量,kettle的做法是啟動的時候默認讀取用戶目錄下一個kettle.properties文件,這種做法維護起來不是特別方便,如果服務器有多臺每次新增變量,每臺服務器都需要維護,為了解決這個問題,可以通過修改kettle源碼從數據庫讀取達到目的。

源碼編譯步驟(本文采用idea工具編譯)

  • 工具下載:
    kettle源碼下載:https://github.com/pentaho/pentaho-kettle/tree/8.0.0.0-R
    kettle客戶端下載:https://sourceforge.net/projects/pentaho/files
    maven下載:http://maven.apache.org/download.cgi

  • idea導入工程
    解壓下好的源碼,idea選擇源碼目錄pom.xml


    image.png

    打開UI模塊,修改swt的maven地址為org.eclipse.swt.win32.win32.x86_64,不然會報錯,因為默認引用的是Linux的jar包,我們換成Windows的


    image.png

    然后將客戶端里的目錄data-integration\ui下的文件復制到工程的pentaho-kettle-8.0.0.0-R\ui\src\main\resources\ui目錄下,這里是一些資源文件
    等待idea自動導入依賴jar包。。。。。
  • 啟動Spoon.java類
    kettle的啟動類是org.pentaho.di.ui.spoon.Spoon,這時候啟動這個類不出意外kettle的界面就出來了


    image.png
  • 修改源碼
    找到類org.pentaho.di.core.util.EnvUtil
    environmentInit這個方法會讀取kettle.properties配置文件加載到kettle全局變量
    源碼如下:

Map<Object, Object> kettleProperties = EnvUtil.readProperties( Const.KETTLE_PROPERTIES );
insertDefaultValues( kettleProperties );
applyKettleProperties( kettleProperties );

我們添加一個方法,調用一次就OK了:

private static void getMysqlParam() {
    Properties pro = new Properties();
    String key = "";
    String value = "";
    try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection conn = DriverManager.getConnection(
              "jdbc:mysql://xx.xx.xx.xx/xx?useUnicode=true&characterEncoding=utf8",
              "xxxx", "xxxxxx");
      Statement stat = conn.createStatement();
      ResultSet rst = stat.executeQuery("select t.key,t.value from table t ");
      while (rst.next()) {
        key = rst.getString(1);
        value = rst.getString(2);
        //System.out.println(key + "---->" + value);
        pro.put(key, value);
      }
      insertDefaultValues(pro);
      applyKettleProperties(pro);
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    }

  }
  • maven打包
    到項目所在目錄執行命令

mvn clean install --settings C:\Users\xn043275.m2\settings.xml -Dmaven.test.skip=true

生成的目標文件路徑在pentaho-kettle-8.0.0.0-R\assemblies\pdi-ce\target

分享就到這里,謝謝大家!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容