整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「實戰」Kettle自定義jar包供JavaScri

          「實戰」Kettle自定義jar包供JavaScript使用

          一個成功人士的背后,必定曾經做出過勇敢而又孤獨的決定。

          放棄不難,但堅持很酷~

          我們都知道 Kettle 是用 Java 語言開發,并且可以在 JavaScript 里面直接調用 java 類方法。所以有些時候,我們可以自定義一些方法,來供 JavaScript 使用。

          本篇文章有參考自:https://www.xiaominfo.com/2019/08/13/kettle-12/

          一、在 java 項目中創建工具類

          在項目中,創建 utils 工具類,比如 計算總頁碼 的一個方法。代碼如下:

          public class PaginationUtils {

          /**
          * 計算得到總頁碼
          * @param totalRecords 總記錄數
          * @param pageSize 分頁大小
          * @return 總頁碼
          */
          public static inttotalPage(String totalRecords,String pageSize){
          int totalPage=0;
          try{
          BigDecimal records=new BigDecimal(totalRecords);
          BigDecimal size=new BigDecimal(pageSize);
          BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1));
          BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP);
          totalPage=_tp.intValue;
          }catch (Exception e){
          //error
          }
          return totalPage;
          }
          }

          二、部署打包

          工具類方法開發完畢后,可通過 mvn clean package -DskipTests命令進行打包,在 target 目錄下,會生成一個 jar 文件。需要將這個 jar 包放到 kettle 的 lib 目錄下。如下圖所示:

          三、編寫 JavaScript 腳本

          重啟 Kettle ,新建 JavaScript 腳本,計算總頁碼的 js 代碼如下所示:

          //計算總頁碼
          var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);

          其實就是在 js 代碼中聲明 java 類+方法。

          但是問題來了,kettle 在運行這段 JavaScript 腳本的時候,提示下面這樣的錯誤:

          不能編譯 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (<cmd>#22)

          根據錯誤信息來看,其實還是沒有找到相關類方法,和沒放這個 jar 包一樣…

          四、FAQ

          上面這個錯誤究竟是怎么回事呢?我也很奇怪。于是我就用壓縮工具也看了看 lib 目錄下的其它 jar 包結構,發現人家都是這樣式的:

          而我剛才打的 jar 包目錄是這樣子的:

          com 目錄并沒有在 jar 包的根路徑下,自然是訪問不到那個方法。

          好,問題產生的原因找到了,然后再說一下解決辦法:

          在 pom.xml 文件中添加:

          <build>
          <plugins>
          <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
          <skip>true</skip>
          </configuration>
          </plugin>
          </plugins>
          </build>

          pom 文件添加后的效果圖如下所示:

          再次打成的 jar 包內部結構為:

          成功!com 目錄已經在 jar 包的根路徑下了。

          將 jar 包替換到 kettle 的 lib 目錄下,重啟 Kettle ,再次通過 javascripts 調用自定義 jar 包成功!

          ettle——javascript組件的使用

          一,計算a+b的值

          二,取date1的年,月,日

          自定義常量數據如下:


          javascript代碼如下:

          2023-2-27








          核心功能詳解

          1. 數據提取(Extract)

          • 廣泛的數據源支持 :Kettle 可以從各種數據源中提取數據,包括傳統關系數據庫(如 Oracle、MySQL、SQL Server)、NoSQL 數據庫(如 MongoDB、Cassandra)、文件系統(如 CSV、JSON、XML)、大數據平臺(如 Hadoop、HDFS)、云存儲(如 Amazon S3、Google Cloud Storage)、Web 服務(REST、SOAP)和消息隊列(如 Kafka)。

          • 靈活的數據提取方式 :支持全量提取、增量提取、變更數據捕獲(CDC),適應不同業務場景的數據需求。


          2. 數據轉換(Transform)

          • 數據清洗 :通過內置的清洗組件,如去重、過濾、填充缺失值、標準化數據格式等,保證數據的質量和一致性。

          • 復雜數據轉換 :支持各種復雜的數據轉換操作,包括數據聚合、分組、拆分、排序、連接(JOIN)、數據映射、數據類型轉換等。

          • 腳本和自定義代碼 :支持通過 JavaScript、Groovy、Java 等腳本語言進行自定義的數據處理,滿足特定業務需求。

          3. 數據加載(Load)

          • 多種目標支持 :Kettle 可以將處理后的數據加載到多種目標,包括數據倉庫(如 Teradata、Snowflake)、數據庫(如 MySQL、PostgreSQL)、大數據存儲(如 HDFS、Hive)、云平臺、文件系統等。

          • 批量和實時加載 :支持批量加載和實時流處理,確保數據的及時性和可用性。


          架構細節

          1. 核心組件

          • Spoon :圖形化設計工具,用于設計、測試和調試 ETL 流程。用戶可以通過拖拽組件和連接線,直觀地構建數據流和作業。

          • Pan :用于執行數據轉換的命令行工具。通常用于自動化腳本和批處理任務。

          • Kitchen :用于執行作業的命令行工具。作業可以包含多個轉換步驟和條件邏輯,適用于復雜的 ETL 流程。

          • Carte :輕量級 Web 服務器,用于遠程執行和監控 ETL 作業和轉換,支持分布式處理和遠程管理。

          2. 運行時架構

          • 執行引擎 :Kettle 的執行引擎支持并行處理和多線程,能夠高效地執行復雜的數據轉換和加載任務。

          • 連接池 :通過配置連接池,Kettle 可以優化數據庫連接的使用,提高性能和資源利用率。

          • 日志和監控 :Kettle 提供詳細的日志和監控功能,可以記錄每個 ETL 步驟的執行情況,支持故障排查和性能優化。


          實際應用場景

          1. 客戶360度視圖

          • 數據整合 :從 CRM、ERP、營銷自動化、客戶支持等系統提取數據,清洗并整合到統一的數據倉庫中。

          • 數據分析 :利用整合后的數據,分析客戶行為、偏好和價值,為營銷和客戶服務提供支持。

          2. 供應鏈管理

          • 實時數據同步 :使用 Kettle 實時同步供應鏈各環節的數據,包括采購、庫存、生產、物流等,確保數據的一致性和實時性。

          • 數據分析 :分析供應鏈效率、庫存水平和物流狀況,優化供應鏈流程,降低成本,提高效率。

          3. 財務數據整合

          • 跨系統數據整合 :從不同財務系統(如 ERP、財務管理軟件)中提取數據,進行清洗和整合,形成統一的財務視圖。

          • 報表生成和分析 :生成各種財務報表,支持財務分析和決策。


          在數據中臺中的具體貢獻

          1. 數據整合

          • 全局數據視圖 :Kettle 可以將企業各個業務系統中的數據進行整合,形成全局的數據視圖,支持數據驅動的業務決策。

          • 數據流管理 :通過設計和管理數據流,實現數據從源頭到目標系統的高效流動和轉換。

          2. 數據治理

          • 數據質量控制 :在 ETL 過程中,對數據進行清洗、校驗和標準化,確保數據的質量和一致性。

          • 元數據管理和數據血緣 :記錄數據的來源、轉換過程和目標位置,支持數據的可追溯性和治理。

          3. 數據服務化

          • API 接口 :通過 Kettle 提供的數據服務接口,支持前端應用和其他系統實時獲取和使用數據。

          • 數據集市 :按需加載數據到業務部門的數據集市,提供個性化的數據服務,支持業務應用和分析需求。


          高級功能和優化

          1. 高級調優

          • 性能調優 :優化 SQL 查詢、使用批量處理、合理配置并行處理,提高 ETL 過程的性能。

          • 資源管理 :通過連接池管理、內存優化和資源分配,提升系統的資源利用效率。

          2. 自動化和調度

          • 自動化作業 :利用 Kitchen 和 Pan 工具,實現 ETL 作業的自動化執行和調度。

          • 調度系統集成 :與操作系統的調度工具(如 Windows Task Scheduler、Linux Cron)集成,實現定時執行和監控。

          3. 安全和權限管理

          • 數據安全 :在 ETL 過程中,確保數據傳輸和存儲的安全性,支持加密和訪問控制。

          • 權限管理 :通過用戶權限管理,控制對數據和 ETL 作業的訪問權限,確保數據的安全和合規。


          使用教程


          1. 安裝與環境配置

          1.1 下載和安裝

          1. 下載

            • 訪問 Pentaho 的官網下載頁面,下載 Pentaho Data Integration(Kettle)的最新版本。下載鏈接:Pentaho Data Integration Download

          2. 解壓

            • 將下載的 ZIP 文件解壓到本地目錄。

          3. 啟動 Spoon

            • 進入解壓后的目錄,運行 spoon.bat (Windows)或 spoon.sh (Linux/MacOS)來啟動 Spoon。

          1.2 環境配置

          1. Java 環境

            • 確保安裝了 JDK(Java Development Kit),并將 JAVA_HOME 環境變量指向 JDK 安裝路徑。

          2. 數據庫驅動

            • 如果要連接到特定數據庫,需要下載對應的 JDBC 驅動,并將驅動 JAR 文件放入 lib 目錄中。

          2. 基礎操作

          2.1 連接數據源

          1. 新建連接

            • 打開 Spoon,選擇 “File” -> “New” -> “Database connection”。

            • 配置數據庫連接參數,包括數據庫類型、主機地址、端口、數據庫名稱、用戶名和密碼。

          2. 測試連接

            • 配置完成后,點擊 “Test” 按鈕,確保連接成功。

          2.2 數據提取與預覽

          1. 新建轉換(Transformation)

            • 選擇 “File” -> “New” -> “Transformation”。

            • 從左側的組件面板中,拖拽 “Table Input” 組件到工作區。

          2. 配置 SQL 查詢

            • 雙擊 “Table Input” 組件,配置數據庫連接和 SQL 查詢,點擊 “Preview” 按鈕預覽數據。

          3. 設計 ETL 過程

          3.1 數據轉換

          1. 添加轉換組件

            • 在轉換中添加所需的組件,如 “Filter Rows” 進行數據過濾,“Sort Rows” 進行數據排序等。

          2. 連接組件

            • 使用鼠標右鍵連接各個組件,設計數據流。

          3. 配置組件

            • 雙擊組件進行配置,如設置過濾條件、排序字段等。

          3.2 數據加載

          1. 添加目標組件

            • 拖拽 “Table Output” 組件到工作區,連接到轉換組件的輸出。

          2. 配置目標表

            • 雙擊 “Table Output” 組件,配置目標數據庫連接和目標表,定義字段映射關系。

          4. 作業管理

          4.1 創建作業(Job)

          1. 新建作業

            • 選擇 “File” -> “New” -> “Job”。

            • 拖拽 “Start” 和 “Transformation” 組件到工作區,連接起來。

          2. 配置作業步驟

            • 雙擊 “Transformation” 組件,選擇要執行的轉換文件。

            • 添加其他步驟,如 “Mail” 發送通知郵件、“Shell” 執行腳本等。

          4.2 調度作業

          1. 設置調度

            • 在作業設計界面中,添加 “Job Scheduler” 組件,配置執行時間和頻率。

            • 或者使用操作系統的調度工具(如 Windows Task Scheduler 或 Linux Cron)來調度執行 Kettle 作業。

          5. 高級功能

          5.1 使用腳本

          1. JavaScript 組件

            • 在轉換中添加 “Modified JavaScript Value” 組件,編寫自定義 JavaScript 代碼進行復雜的數據處理。

          2. 用戶定義函數

            • 編寫和調用用戶定義函數(UDF),以擴展 Kettle 的功能。

          5.2 數據庫連接池

          1. 配置連接池

            • 在 Spoon 中配置數據庫連接池,提高數據庫連接的復用性和性能。

          5.3 性能優化

          1. 調優轉換和作業

            • 優化 SQL 查詢,減少數據量和提高處理速度。

            • 使用批量處理,減少數據庫操作的次數。

            • 合理設置并行處理,充分利用多核 CPU 性能。

          6. 實踐案例

          6.1 數據倉庫建設

          1. 數據提取

            • 從多個業務系統提取數據,清洗并轉換為統一的格式。

          2. 數據加載

            • 將清洗后的數據加載到數據倉庫的事實表和維度表中,設計星型或雪花型模型。

          6.2 實時數據同步

          1. 數據監聽

            • 使用 Kettle 監聽數據庫變化(如 CDC),實時提取變更數據。

          2. 流處理

            • 實時處理變更數據,并同步到目標系統,如數據倉庫或 NoSQL 數據庫。









          描述 Kettle 執行流程

          1. 啟動 Spoon

            • 使用 Spoon 設計和測試轉換(Transformation)和作業(Job)。

            • 配置數據庫連接、數據源和目標,創建 ETL 流程。

          2. 設計轉換和作業

            • 在 Spoon 中拖拽組件(如 Table Input、Filter Rows、Table Output 等)到工作區。

            • 通過連接組件,設計數據流和處理邏輯。

            • 配置每個組件的詳細參數和腳本。

          3. 保存轉換和作業

            • 將設計好的轉換和作業保存為 .ktr (Transformation 文件)和 .kjb (Job 文件)。

          4. 執行作業和轉換

            • 使用 Kitchen(命令行工具)來執行作業,或者使用 Pan 來執行單個轉換。

            • 通過命令行參數指定要執行的 .ktr .kjb 文件。

          5. 數據提取(Extract)

            • 從指定的數據源中提取數據。數據源可以是關系型數據庫、NoSQL 數據庫、文件、Web 服務等。

            • 使用 Table Input 或其他輸入組件讀取數據。

          6. 數據轉換(Transform)

            • 在數據提取之后,使用各種轉換組件對數據進行清洗、過濾、轉換和聚合。

            • 可以使用 Filter Rows、Sort Rows、Join Rows、Add Constants 等組件。

            • 使用腳本組件(如 Modified JavaScript Value)進行復雜的轉換邏輯。

          7. 數據加載(Load)

            • 將轉換后的數據加載到目標系統,如數據倉庫、數據庫、文件系統等。

            • 使用 Table Output 或其他輸出組件將數據寫入目標位置。

          8. 日志和監控

            • 在執行過程中,Kettle 記錄詳細的日志,包含每個步驟的執行時間、處理的數據量、錯誤信息等。

            • 使用 Carte 或其他監控工具查看和管理執行情況。

          詳細流程步驟

          1. 啟動 Spoon

            • 啟動 Spoon 應用,打開設計界面。

          2. 設計轉換和作業

            • 在 Spoon 中,創建新的轉換(Transformation)。

            • 從左側面板中拖拽 “Table Input” 組件到工作區,用于從數據源提取數據。

            • 配置 “Table Input” 組件的數據庫連接和 SQL 查詢。

            • 添加 “Filter Rows” 組件,用于數據清洗和過濾。

            • 配置過濾條件,將數據流連接到下一個組件。

            • 添加 “Table Output” 組件,用于將數據加載到目標系統。

            • 配置目標數據庫連接和目標表。

          3. 保存轉換和作業

            • 保存轉換為 .ktr 文件,作業為 .kjb 文件。

          4. 執行作業和轉換

            • 打開命令行,使用 kitchen.sh -file=/path/to/job.kjb 執行作業,或者 pan.sh -file=/path/to/transformation.ktr 執行轉換。

          5. 數據提取(Extract)

            • “Table Input” 組件從數據源提取數據,根據配置的 SQL 查詢獲取所需數據。

          6. 數據轉換(Transform)

            • 數據流經 “Filter Rows” 組件,根據設置的過濾條件處理數據,去除不符合條件的數據。

            • 可以添加其他轉換組件進行進一步的數據處理和清洗。

          7. 數據加載(Load)

            • 處理后的數據通過 “Table Output” 組件加載到目標系統。

            • 配置字段映射關系,確保數據正確插入目標表。

          8. 日志和監控

            • 查看 Spoon 中的日志窗口,監控每個步驟的執行情況。

            • 使用 Carte 或其他監控工具,遠程監控和管理 ETL 過程。


          主站蜘蛛池模板: 无码人妻一区二区三区在线| 国产精品视频一区二区三区无码| 高清国产AV一区二区三区| 在线视频国产一区| 国产激情一区二区三区成人91| 多人伦精品一区二区三区视频| 亚洲一区精品视频在线| 精品国产高清自在线一区二区三区| 国产精品区AV一区二区| 久久se精品动漫一区二区三区| 亚洲av乱码一区二区三区| 成人一区二区三区视频在线观看| 日本精品视频一区二区三区| 日韩电影一区二区| 中文字幕一区二区三区日韩精品| 中文字幕人妻第一区| 99久久精品国产一区二区成人| 国产精品高清视亚洲一区二区| 在线日韩麻豆一区| 国产精品一区二区久久精品| 无码人妻精品一区二区蜜桃| 日韩人妻不卡一区二区三区| 丰满人妻一区二区三区视频| 国产免费无码一区二区| 精品一区二区视频在线观看| 日韩一区二区三区在线精品| 久久er99热精品一区二区| 性色av一区二区三区夜夜嗨| 中文无码AV一区二区三区| 国产成人无码AV一区二区在线观看 | 精品国产一区二区三区av片| 精品女同一区二区| 国产精品亚洲一区二区在线观看| 中文精品一区二区三区四区 | 国产激情视频一区二区三区| www.亚洲一区| 一区二区三区在线免费| 久久精品无码一区二区app | 亚洲日本一区二区三区| 搜日本一区二区三区免费高清视频| 国产av一区最新精品|