新聞中心
一、基本原理
? 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ā)展。
1、OutputFormat
public abstract class OutputFormat {
public OutputFormat() {
}
public abstract RecordWriter 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ì)象。
2、RecordWriter
public abstract class RecordWriter {
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寫入到文件中。
二、常用的OutputFormat實(shí)現(xiàn)類
1、TextOutputFormat
? 繼承 FileOutputFormat,返回的RecordWriter是TextOutputFormat.LineRecordWriter。將每個(gè)KV轉(zhuǎn)換為文本的每一行??梢远xkey和value在文本中的分隔符,默認(rèn)是“\t”。
2、SequenceFileOutputFormat
? 同樣繼承于FileOutputFormat,返回的RecordWriter是一個(gè)匿名內(nèi)部類,直接將所有的KV以追加的方式寫入到文本中,不另外分行(除非原先數(shù)據(jù)中帶有換行)。
? SequenceFileOutputFormat將它的輸出寫為一個(gè)順序文件。如果輸出需要作為后續(xù) MapReduce任務(wù)的輸入,這便是一種好的輸出格式,因?yàn)樗母袷骄o湊,很容易被壓縮。
新聞名稱:十四、MapReduce--OutputFormat和RecordWriter抽象類
文章來(lái)源:http://fisionsoft.com.cn/article/ggssic.html