![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLwUEVOFzaU9UMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxYzM5MTMyEjM0ITMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
之前文章中 kettle 實戰記錄這個是 之前的需求 ,使用記錄集連接配接 優化了程式,取消了 阻塞資料的元件,針對批量積壓的檔案也可以從容應對。
https://blog.csdn.net/qq_35995514/article/details/106856885
需求:将HDFS檔案解析,将最新的裝置狀态更新到資料庫,由于檔案是5分鐘2個(可控制) ,隻想拿到最新的裝置狀态字段做裝置資訊更新,是以對檔案中的字段做 分組排序(文本檔案輸入2),根據時間拿到每個裝置的最新上報時間;
兩個文本輸入的資料是一樣的,檔案檔案輸入2 拿到最新的 時間字段 然後 和 文本檔案輸入 記錄集連接配接 拿到想要解析的處理的字段 ;
更新IP的分支是讀取資料庫的配置資訊将IP變化的更新到資料庫中,用的是部門提供的存儲過程,記錄集 連接配接的是 檔案解析出的字段和 配置庫查詢出的字段資訊。
優化後的 ETL 過程
分組之前一樣要将分組字段排序,然後根據時間排序
根據兩個字段分組,按照時間字段排序
連接配接類型為 inner 跟兩個表的 join 差不多
記錄集連接配接之前必須将要連接配接的字段排好序 ,升序 或者 降序要保持一緻
調用存儲過程 ,存儲過程是查詢資料庫,要将查詢出的結果集輸出就要用表輸入而不能用調用存儲過程的的元件
這個步驟使用到了去除重複記錄元件,将兩個IP 相同的記錄去除掉,去除重複記錄元件之前兩個字段也要排序,但是這個元件是将字段全部相同記錄集去除,隻是減少記錄
JS判斷 兩個字段IP是否相等
IP不等 也就是條件 為 TRUE的時候将變了的 IP 第三個字段給到後面的調用存儲過程。