歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Hadoop開發常用的InputFormat和OutputFormat

Hadoop開發常用的InputFormat和OutputFormat

日期:2017/3/1 9:42:23   编辑:Linux編程

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

Copyright © Linux教程網 All Rights Reserved