目錄
一、StreamSets簡介
二、定時排程的案例
2.1總體管道流設計
2.2具體步驟
2.3 運作
一、StreamSets簡介
Streamsets是一款大資料實時采集和ETL工具,可以實作不寫一行代碼完成資料的采集和流轉。通過拖拽式的可視化界面,實作資料管道(Pipelines)的設計和定時任務排程,Kettle缺點是通過定時運作,實時性相對較差。
需求:定時的開啟一個管道流,此處希望也可以定時的關閉。目前找到的方式就是下面的這個元件,以下的案例也是基于此元件展開。
Cron Scheduler 使用的官方文檔:點選前面
二、定時排程的案例
2.1總體管道流設計
2.2具體步驟
1.origins- corn scheduler
選擇定時的元件 ,origins 在一個管道流中隻能有一個,其他的元件可以在 process,destination和executor 中選取。
說明:此處選擇每小時的執行是友善示範,這個可以随意的調整,expression表達式是使用 Java開發的排程架構Quartz中定義。
expression表達式的使用可以見http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
2.process- JDBC Look Up
(1)JDBC 連接配接位址
(2)資料庫使用者和密碼
(3)MySQL驅動,此處事先要将mysql驅動上傳上來
3.Stream Selector
4.管道流分支一------資料落入本地磁盤
(1)Output Fies 選擇檔案輸出類型、檔案的前字尾、輸入檔案夾,輸入檔案的大小,檔案形成的時間間隔,此處我認為應該跟 Flume 差不多吧,可以配置檔案形成的滾動時間間隔和大小兩個因素來控制。
(2)Data Format 資料類型此處選擇JSON
5.管道流過濾分支二-----過濾出的資料入庫
(1)選擇 destinations中的 JDBC Producer,JDBC 連接配接,指定資料庫名,選擇插入資料
(2)資料庫的使用者名和密碼,還有就是驅動
6.管道流過濾分支三--垃圾桶
沒什麼好說的,就是其他的資料不要了呗。
2.3 運作
1.點選Start 啟動 管道流
2.到達定時的時間點
沒有到達管道流資料的流入時間,管道流靜靜的等待,時間一到資料湧入。
3.資料落入本地磁盤
管道流資料流入形成的是一個 tmp 的臨時檔案,檔案的最終生成應該可以有檔案大小和時間間隔控制。
資料流形成的檔案,這個時候沒有 tmp 标記
4.過濾出的資料寫入新的表
我們可以看到Output2 中有7條資料流出二資料庫中的資料記錄條數也是 7條。
以上就是對 StreamSets 排程的簡單示例,還在學習當中,不足之處肯定存在,僅供學習參考吧。
存在的問題:
- 網上看到資料庫資料同步 資料重複問題,這個使用 Executors 中的 Pipeline Finisher 執行一次,我也沒有驗證
- 管道流開啟時間排程器也啟動了,怎麼結束,讓每天這個時間點去執行呢?這個 Core Scheduler 的 expression 表達式應該可以解決