大家好,我是帥氣小伙暮蹂,由于最近公司項(xiàng)目輾轉(zhuǎn)大數(shù)據(jù)链患,需要做數(shù)據(jù)抽取的工作,kettle是目前比較成熟的ETL工具调限,而傳統(tǒng)的kettle客戶端在任務(wù)調(diào)度這方面沒有實(shí)現(xiàn),于是在網(wǎng)上尋找開源的kettle調(diào)度項(xiàng)目误澳。
kettle-manager
專門為kettle這款優(yōu)秀的ETL工具開發(fā)的web端管理工具耻矮。貌似源碼跑起來比較費(fèi)勁,各種缺包忆谓,于是我為大家專門整理了一下這個(gè)項(xiàng)目裆装。全maven管理的
https://github.com/konglinghai123/kettle
如果想學(xué)習(xí)kettle的可以用我的github項(xiàng)目運(yùn)行,畢竟我在群里天天發(fā)現(xiàn)都有人因?yàn)闊o法運(yùn)行項(xiàng)目而提問倡缠。
kettle的集成
由于kettle-manager是一個(gè)完整的web項(xiàng)目哨免,功能也比較多,但是實(shí)際應(yīng)用中毡琉,只需用到幾個(gè)關(guān)鍵的點(diǎn)铁瞒,就能夠?qū)崿F(xiàn)kettle的web調(diào)度妙色。因此我們需要把kettle的調(diào)度從項(xiàng)目中分離出來桅滋,這樣才能夠更好地集成到自己的項(xiàng)目中去。于是我覺得將它抽出來身辨,基于spring-boot丐谋,具體的業(yè)務(wù)也分離出來,kettle作為一個(gè)組件煌珊。
項(xiàng)目說明
- renren_kettle是修改了kettle-manager的源碼的項(xiàng)目号俐,由于馬老師的項(xiàng)目基于EVOA,不便于系統(tǒng)的集成定庵,所以將部分重要功能轉(zhuǎn)接到spring-boot吏饿,
具體操作kettle的sql仍然是beetl的,具體的代碼帶 kettle 這個(gè)模塊蔬浙,而其他業(yè)務(wù)代碼你可以選擇mybatis去實(shí)現(xiàn)猪落。 - renren_kettle是搭建在renren_fast的基礎(chǔ)上的,這個(gè)框架如何使用畴博,請(qǐng)看這個(gè)開源項(xiàng)目的文檔
項(xiàng)目實(shí)現(xiàn)功能
- 作業(yè)的列表(非實(shí)時(shí))笨忌,啟動(dòng),停止俱病,終結(jié)官疲,刪除袱结,結(jié)束 (VJobController)
- 基于websocket的實(shí)時(shí)日志 (KettleLogListener)
- 前端代碼,忙著找工作,沒有實(shí)現(xiàn),請(qǐng)各位自行完善
項(xiàng)目結(jié)構(gòu)
renren-fast
├─doc 項(xiàng)目SQL語句
│
├─kettle 馬老師的 kettle api調(diào)用都在這里
├─common 公共模塊
│ ├─aspect 系統(tǒng)日志
│ ├─exception 異常處理
│ ├─validator 后臺(tái)校驗(yàn)
│ └─xss XSS過濾
│
├─config 配置信息
│
├─modules 功能模塊
│ ├─api API接口模塊(APP調(diào)用)
│ ├─job 定時(shí)任務(wù)模塊
│ ├─kettle kettle相關(guān)的業(yè)務(wù)
│ ├─oss 文件服務(wù)模塊
│ └─sys 權(quán)限模塊
│
├─RenrenApplication 項(xiàng)目啟動(dòng)類
│
├──resources
│ ├─mapper SQL對(duì)應(yīng)的XML文件
│ ├─static 第三方庫途凫、插件等靜態(tài)資源
│ └─views 項(xiàng)目靜態(tài)頁面
實(shí)時(shí)websocket的接入例子
<script type="text/javascript">
var websocket = null;
$(document).ready(function(){
//判斷當(dāng)前瀏覽器是否支持WebSocket
if('WebSocket' in window){
//${path} 是jsp的標(biāo)簽
websocket = new WebSocket("ws://${path}/kettle/log");
}
else{
alert('Not support websocket')
}
//連接發(fā)生錯(cuò)誤的回調(diào)方法
websocket.onerror = function(){
setMessageInnerHTML("error");
};
//連接成功建立的回調(diào)方法
websocket.onopen = function(event){
var message = $("#jobId").val()+"-"+"open";
websocket.send(message);
}
//接收到消息的回調(diào)方法
websocket.onmessage = function(event){
setMessageInnerHTML(event.data);
}
//連接關(guān)閉的回調(diào)方法
websocket.onclose = function(){
closeWebSocket();
}
//監(jiān)聽窗口關(guān)閉事件垢夹,當(dāng)窗口關(guān)閉時(shí),主動(dòng)去關(guān)閉websocket連接维费,防止連接還沒斷開就關(guān)閉窗口棚饵,server端會(huì)拋異常。
window.onbeforeunload = function(){
websocket.close();
}
});
//關(guān)閉連接
function closeWebSocket(){
websocket.close();
}
//將消息顯示在網(wǎng)頁上
function setMessageInnerHTML(innerHTML){
document.getElementById('message').innerHTML += innerHTML +"\r\n"+"***********************************************************************>"+"\r\n";
}
function removeAll() {
$("#message").html("");
}
</script>
部署指南
doc有2個(gè)數(shù)據(jù)庫
kettle.sql (kettle 5.4的資源庫)掩完,有一張表是自己加的噪漾,CrTask-定時(shí)任務(wù)表,這里面有一條固定的記錄且蓬,用于定時(shí)獲取kettle的日志欣硼,然后發(fā)到websocket。
renren_fast.sql (renren 開源項(xiàng)目的業(yè)務(wù)數(shù)據(jù)庫)kettle的配置文件 resources/kettle.properties
renren項(xiàng)目的配置都在application.yml
如需加入項(xiàng)目恶阴,請(qǐng)郵件823894716@qq.com