Hadoop中的Map Reduce框架依賴InputFormat提供數據,依賴OutputFormat輸出數據;每一個Map Reduce程序都離不開他們。Hadoop提供了一系列InputFormat和OutputFormat方便開發,本文介紹幾種常用的。
--------------------------------------分割線 --------------------------------------
Ubuntu 13.04上搭建Hadoop環境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu上搭建Hadoop環境(單機模式+偽分布模式) http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu下Hadoop環境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
單機版搭建Hadoop環境圖文教程詳解 http://www.linuxidc.com/Linux/2012-02/53927.htm
--------------------------------------分割線 --------------------------------------
TextInputFormat
用於讀取純文本文件,文件被分為一系列以LF或者CR結束的行,key是每一行的位置(偏移量,LongWritable類型),value是每一行的內容,Text類型。
KeyValueTextInputFormat
同樣用於讀取文件,如果行被分隔符(缺省是tab)分割為兩部分,第一部分為key,剩下的部分為value;如果沒有分隔符,整行作為 key,value為空
SequenceFileInputFormat
用於讀取sequence file。 sequence file是Hadoop用於存儲數據自定義格式的binary文件。它有兩個子類:SequenceFileAsBinaryInputFormat,將 key和value以BytesWritable的類型讀出;SequenceFileAsTextInputFormat,將key和value以 Text的類型讀出。
SequenceFileInputFilter
根據filter從sequence文件中取得部分滿足條件的數據,通過setFilterClass指定Filter,內置了三種 Filter,RegexFilter取key值滿足指定的正則表達式的記錄;PercentFilter通過指定參數f,取記錄行數%f==0的記錄;MD5Filter通過指定參數f,取MD5(key)%f==0的記錄。
NLineInputFormat
0.18.x新加入,可以將文件以行為單位進行split,比如文件的每一行對應一個map。得到的key是每一行的位置(偏移量,LongWritable類型),value是每一行的內容,Text類型。
CompositeInputFormat,用於多個數據源的join。
TextOutputFormat,輸出到純文本文件,格式為 key + " " + value。
NullOutputFormat,hadoop中的/dev/null,將輸出送進黑洞。
SequenceFileOutputFormat, 輸出到sequence file格式文件。
MultipleSequenceFileOutputFormat, MultipleTextOutputFormat,根據key將記錄輸出到不同的文件。
DBInputFormat和DBOutputFormat,從DB讀取,輸出到DB。
更多Hadoop相關信息見Hadoop 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=13