由于在sh中調(diào)用某應(yīng)用需要的是待處理文件路徑郎任,因此:
1、hadoop命令:hadoop的input指向的是待處理數(shù)據(jù)的文件路徑part-list文件;
2降传、map.sh腳本:使用while-do-done循環(huán)讀取part-list文件內(nèi)容并調(diào)用該應(yīng)用;
3勾怒、python腳本:將該應(yīng)用返回?cái)?shù)據(jù)再灌入python腳本婆排。
由于無(wú)需調(diào)用其他應(yīng)用,因此:
1笔链、hadoop命令:input指向的是待處理數(shù)據(jù)段只;
2、map.sh腳本:將待處理的數(shù)據(jù)流直接灌入python腳本鉴扫;
3赞枕、python腳本:直接從stdin數(shù)據(jù)流中獲取待處理數(shù)據(jù)。
hadoop輸入使用待處理文件路徑文件:
1坪创、hadoop命令:hadoop的input指向的是待處理數(shù)據(jù)的文件路徑part-list文件炕婶,并將待處理數(shù)據(jù)路徑使用cachefile參數(shù)分發(fā)至計(jì)算節(jié)點(diǎn);
2莱预、map.sh腳本:使用while-do-done或者直接灌入python腳本柠掂;
3、python腳本:使用codecs訪問stdin中的文件路徑锁施,獲取數(shù)據(jù)后再處理陪踩。
這種方式僅適用于待處理文件不大的情況杖们,否則分發(fā)文件會(huì)耗費(fèi)資源。