我們都知道,假設
hadoop job -list
獲取當前正在執行的hadoop 任務,返回的結果例如以下:
返回的任務中不包含任務的名稱, 可是通過hadoop 管理頁面是能夠檢視到job 的名稱的。
可是現實情況是我們可能須要依據任務的名稱來刪除任務。
我的實現方案是這種
1. 通過獲取 網頁
2. 解析網頁獲取任務名稱 + job_id 的任務列表
3. 過濾出指定名稱的job
4. 最後呼叫hadoop job -kill 來殺死任務
**例如以下:
parse.py 使用python 自帶的html 解析模組
from htmlparser import htmlparser
class myhtmlparser(htmlparser):
def __init__(self):
htmlparser.__init__(self)
# self.current_tag = none
self.flag = false
self.name_flag = false
def handle_starttag(self, tag, attrs):
if tag == 'td':
for name,value in attrs:
if name == 'id' and value.startswith("job_"):
self.flag = true
self.name_flag = false
break
elif name == 'id' and value.startswith("name_"):
self.flag = true
self.name_flag = true
break
def handle_endtag(self, tag):
self.flag = false
def handle_data(self, data):
if self.flag:
print data,
if self.name_flag:
print ' '
if __name__ == '__main__':
fp = open("./jobtracker.jsp")
data = fp.read()
my = myhtmlparser()
my.feed(data)
主程式 kill_job.sh
用shell 實現
# 過濾待刪除的任務
keyword=$1
if [ -z "$keyword" ] ; then
echo "引數不能為空"
echo "使用方法: bash kill_job.sh "
exit
ficurl -o
python parse.py | grep $keyword |sort| tee job.tmp
echo "---------------- start kill -------------------"
# 執行刪除動作
cat ./job.tmp |sort| while read line
do #echo $line
job_id=`echo $line|awk -f " " ''| tr -d ' '`
echo "kill job -- $"
hadoop job -kill "$job_id"
done
執行方法:
bash kill_job.sh merge_sl
merge_sl 是job 的名稱 jQuery從字串中刪除字串
可以這麼說,這就是使用jquery從字串中刪除字串的方法。以下示例有望闡明我的意思。它使用了jquery.grep 這是乙個非常酷的搜尋功能 有點像php子字串 總之。與往常一樣,只需複製,貼上,使用firebug執行即可進行測試和試驗。function join console.log resul...
字串匹配
題目描述 讀入資料string 然後讀入乙個短字串。要求查詢string 中和短字串的所有匹配,輸出行號 匹配字串。匹配時不區分大小寫,並且可以有乙個用中括號表示的模式匹配。如 aa 123 bb 就是說aa1bb aa2bb aa3bb都算匹配。輸入 輸入有多組資料。每組資料第一行輸入n 1 n ...
字串匹配
time limit 1000ms memory limit 65536k 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現...