教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

InputFormat接口的定義代碼怎么設(shè)置?

更新時(shí)間:2020年11月03日17時(shí)38分 來(lái)源:傳智播客 瀏覽次數(shù):

      Hadoop中有五個(gè)編程組件,分別是:InputFormat、Mapper、Reducer、Parttioner、OutputFromat和Canbiner,其中Canbiner的作用是對(duì)Map階段的輸出的重復(fù)數(shù)據(jù)先做一次合并計(jì)算,所以不屬于必屬件。本節(jié)課就來(lái)對(duì)MapReducer的這5個(gè)必備組件的代碼操作步驟做一個(gè)簡(jiǎn)單介紹:

  InputFormat主要用于描述輸入數(shù)據(jù)的格式,它提供以下兩個(gè)功能:

  數(shù)據(jù)切分:按照某個(gè)策略將輸入數(shù)據(jù)切分成若干個(gè)分片(split),以便確定MapTask個(gè)數(shù)以及對(duì)應(yīng)的分片(split)。

  ·為Mapper提供輸入數(shù)據(jù):給定某個(gè)分片(split),將其解析成一個(gè)一個(gè)的key/value鍵值對(duì)。

  · Hadoop自帶了一個(gè) InputFormat接口,該接口的定義代碼如下所示:

public abstract class InputFormat {

     public abstract List getSplits(JobContext context

               ) throws IOException, InterruptedException;

     public abstract RecordReadercreateRecordReader(InputSplit split,

                     TaskAttemptContext context

               ) throws IOException, InterruptedException;

  }

  從上述代碼可以看出,InputFormat接口定義了getSplits()和createRecordReader()兩個(gè)方法,其中,getSplits()方法負(fù)責(zé)將文件切分為多個(gè)分片(split),createRecordReader()方法負(fù)責(zé)創(chuàng)建RecordReader對(duì)象,用來(lái)從分片中讀取數(shù)據(jù)。下面,我們主要對(duì)getSplits()方法進(jìn)行介紹。
      getSplits()方法主要實(shí)現(xiàn)了邏輯切片機(jī)制。其中,切片的大小splitSize是由3個(gè)值確定的,即minSize、maxSize和blockSize。
     minSize:splitSize的最小值,由參數(shù)mapred.min.split.size確定,可在mapred-site.xml中進(jìn)行配置,默認(rèn)為1MB。
     maxSize:splitSize的最大值,由參數(shù)mapreduce.jobtracker.split.metainfo.maxsize確定,可在mapred-site.xml中進(jìn)行設(shè)置,默認(rèn)值為10MB。
     blockSize:HDFS中文件存儲(chǔ)塊的大小,由參數(shù)dfs.block,size確定,可在hdf-site.xml中進(jìn)行修改,默認(rèn)為128MB。

    猜你喜歡:

 Znode儲(chǔ)存結(jié)構(gòu)是怎樣的?節(jié)點(diǎn)類(lèi)型有幾種?

 Spark的集群安裝與配置簡(jiǎn)介

 傳智播客大數(shù)據(jù)培訓(xùn)課程

0 分享到:
和我們?cè)诰€交談!