? reduce執(zhí)行完畢之后,每個(gè)reduce都會(huì)將KV輸出到一個(gè)文件中。那么KV輸出到文件中時(shí)是以什么格式輸出的呢?這就涉及到兩個(gè)抽象類:OutputFormat和RecordWriter。
目前成都創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、寧武網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
public abstract class OutputFormat<K, V> {
public OutputFormat() {
}
public abstract RecordWriter<K, V> getRecordWriter(TaskAttemptContext var1) throws IOException, InterruptedException;
public abstract void checkOutputSpecs(JobContext var1) throws IOException, InterruptedException;
public abstract OutputCommitter getOutputCommitter(TaskAttemptContext var1) throws IOException, InterruptedException;
}
其實(shí)主要就是創(chuàng)建RecordWriter對(duì)象。
public abstract class RecordWriter<K, V> {
public RecordWriter() {
}
//將KV寫入到輸出流
public abstract void write(K var1, V var2) throws IOException, InterruptedException;
//關(guān)閉流
public abstract void close(TaskAttemptContext var1) throws IOException, InterruptedException;
}
主要就是write方法,將KV寫入到文件中。
? 繼承 FileOutputFormat,返回的RecordWriter是TextOutputFormat.LineRecordWriter。將每個(gè)KV轉(zhuǎn)換為文本的每一行??梢远xkey和value在文本中的分隔符,默認(rèn)是“\t”。
? 同樣繼承于FileOutputFormat,返回的RecordWriter是一個(gè)匿名內(nèi)部類,直接將所有的KV以追加的方式寫入到文本中,不另外分行(除非原先數(shù)據(jù)中帶有換行)。
? SequenceFileOutputFormat將它的輸出寫為一個(gè)順序文件。如果輸出需要作為后續(xù) MapReduce任務(wù)的輸入,這便是一種好的輸出格式,因?yàn)樗母袷骄o湊,很容易被壓縮。
本文名稱:十四、MapReduce--OutputFormat和RecordWriter抽象類
網(wǎng)站路徑:http://jinyejixie.com/article2/ggssic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、手機(jī)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、虛擬主機(jī)、移動(dòng)網(wǎng)站建設(shè)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)