天天看點

StreamSets 定時排程

目錄

一、StreamSets簡介

二、定時排程的案例

2.1總體管道流設計

2.2具體步驟

2.3 運作

一、StreamSets簡介

      Streamsets是一款大資料實時采集和ETL工具,可以實作不寫一行代碼完成資料的采集和流轉。通過拖拽式的可視化界面,實作資料管道(Pipelines)的設計和定時任務排程,Kettle缺點是通過定時運作,實時性相對較差。

 需求:定時的開啟一個管道流,此處希望也可以定時的關閉。目前找到的方式就是下面的這個元件,以下的案例也是基于此元件展開。

StreamSets 定時排程

Cron Scheduler 使用的官方文檔:點選前面

二、定時排程的案例

2.1總體管道流設計

StreamSets 定時排程

2.2具體步驟

1.origins- corn scheduler

      選擇定時的元件 ,origins 在一個管道流中隻能有一個,其他的元件可以在 process,destination和executor 中選取。

StreamSets 定時排程

 說明:此處選擇每小時的執行是友善示範,這個可以随意的調整,expression表達式是使用 Java開發的排程架構Quartz中定義。

expression表達式的使用可以見http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html

2.process- JDBC  Look Up

(1)JDBC 連接配接位址

StreamSets 定時排程

 (2)資料庫使用者和密碼

StreamSets 定時排程

(3)MySQL驅動,此處事先要将mysql驅動上傳上來

StreamSets 定時排程

3.Stream Selector

StreamSets 定時排程

4.管道流分支一------資料落入本地磁盤

(1)Output Fies 選擇檔案輸出類型、檔案的前字尾、輸入檔案夾,輸入檔案的大小,檔案形成的時間間隔,此處我認為應該跟 Flume 差不多吧,可以配置檔案形成的滾動時間間隔和大小兩個因素來控制。

StreamSets 定時排程

(2)Data Format 資料類型此處選擇JSON

StreamSets 定時排程

5.管道流過濾分支二-----過濾出的資料入庫

(1)選擇 destinations中的 JDBC Producer,JDBC 連接配接,指定資料庫名,選擇插入資料

StreamSets 定時排程

(2)資料庫的使用者名和密碼,還有就是驅動

6.管道流過濾分支三--垃圾桶

    沒什麼好說的,就是其他的資料不要了呗。

2.3 運作

1.點選Start 啟動 管道流

StreamSets 定時排程

2.到達定時的時間點 

   沒有到達管道流資料的流入時間,管道流靜靜的等待,時間一到資料湧入。

StreamSets 定時排程

3.資料落入本地磁盤

     管道流資料流入形成的是一個 tmp 的臨時檔案,檔案的最終生成應該可以有檔案大小和時間間隔控制。

StreamSets 定時排程

 資料流形成的檔案,這個時候沒有 tmp 标記

StreamSets 定時排程

4.過濾出的資料寫入新的表

StreamSets 定時排程

 我們可以看到Output2  中有7條資料流出二資料庫中的資料記錄條數也是 7條。

StreamSets 定時排程

 以上就是對 StreamSets  排程的簡單示例,還在學習當中,不足之處肯定存在,僅供學習參考吧。

存在的問題:

  • 網上看到資料庫資料同步 資料重複問題,這個使用 Executors 中的 Pipeline Finisher 執行一次,我也沒有驗證
  • 管道流開啟時間排程器也啟動了,怎麼結束,讓每天這個時間點去執行呢?這個 Core Scheduler 的 expression 表達式應該可以解決

繼續閱讀