感覺網上相關資訊較少,於是把自己使用的方法記錄一下
reducer要繼承自tablereducer,這樣才能在main函式中配置輸出的表
tablemapreduceutil.inittablereducerjob($(table), invertedindexreducer.class, job);
輸出使用multipleoutputs來做到多方向輸出,context可以不使用
main中新增multipleoutputs的輸出格式,並給予相應的名稱
multipleoutputs.addnamedoutput(job,"hdfs",textoutputformat.class,text.class,text.class);
multipleoutputs.addnamedoutput(job,"hbase", tableoutputformat.class,immutablebyteswritable.class,put.class);
reducer中要宣告乙個multipleoutputs
private multipleoutputs mos;
在setup中加入初始化,@suppresswarnings(「unchecked」)用來忽略相關warning
@override
@suppresswarnings("unchecked")
protected
void
setup(context context) throws ioexception, interruptedexception
在reduce函式中,在需要輸出的位置加上
//輸出資料到hbase
mos.write("hbase",new immutablebyteswritable(bytes.tobytes(last)),put);
//輸出詳細資訊到hdfs
mos.write("hdfs",new text(last), new text(str));
最後在cleanup函式中加入close,否則將出現不輸出的問題
public
void
cleanup(context context) throws ioexception, interruptedexception
在main函式中加入lazyoutputs可以防止hadoop自動生成空檔案
lazyoutputformat.setoutputformatclass(job,textoutputformat.class);
linux命令tee 將資訊同時輸出到螢幕和檔案
當程式輸出內容過多,容易導致終端顯示不全。可以通過將輸出內容寫入檔案的形式儲存執行的log。如果在linux下希望將程式或命令執行的資訊,在輸入到檔案的同時,也能夠顯示在螢幕上,可以使用tee這個命令。下圖是對這個命令的形象介紹 例 執行 python test.py 如果只希望執行資訊顯示在螢幕上...
python 資訊同時輸出到控制台與檔案
python程式設計中,往往需要將結果用print等輸出,如果希望輸出既可以顯示到ide的螢幕上,也能存到檔案中 如txt 中,該怎麼辦呢?可通過日誌logging模組輸出資訊到檔案或螢幕。但可能要設定log的level或輸出端,對於同時需要記錄debug error等資訊的較為合適,官方教程推薦學...
程式的輸出和輸出到標準錯誤中的輸出
今天編譯執行程式的時候,發現在程式中的斷點輸出 和 輸出到作業系統標準錯誤中的輸出是不一樣的!哇哇,哈哈,開心,又多了解了一點知識。上一段golang 的 package main import errors fmt os log func main set goos linux 後編譯位linux...