1. 引言
眾所周知,Oozie(1, 2)是基于時(shí)間條件與數(shù)據(jù)生成來做工作流調(diào)度的,但是Oozie的數(shù)據(jù)觸發(fā)條件只支持HDFS路徑,故而面臨著這樣的問題:
- 無法判斷Hive partition是否已存在;
- 無法判斷Elasticsearch index是否已寫入完成;
- ...
因此,靈活可擴(kuò)展的工作流引擎才是正確姿勢!下面,我將介紹如何用Crontab來打造一個(gè)類似于Oozie的簡易工作流引擎;對標(biāo)Oozie,其應(yīng)滿足功能:
- 時(shí)間條件與數(shù)據(jù)生成觸發(fā)任務(wù),如Oozie coordinator的datasets與input-events;
- 支持觸發(fā)條件的輪詢;
- 支持任務(wù)并行執(zhí)行,如Oozie workflow的fork與join;
- 捕獲錯(cuò)誤及運(yùn)行狀態(tài)日志。
2. 實(shí)現(xiàn)
觸發(fā)條件
判斷Hive partition是否已存在,思路比較簡單——show partitions <tb_name>后能否grep到該partition:
# check wheter $1's partition ($2) exists hive_partition_exists() {
table_name=$1
partition=$2
hive -e "show partitions ${table_name}" | grep ${partition}
[ $? == 0 ]
}
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26