Hadoop -數據輸入輸出格式和自定義數據輸入輸出格式

數據輸入輸出格式和自定義數據輸入輸出格式



數據輸入格式(InputFormat) 用于描述MapReduce作業(yè)的數據輸入規(guī)范。MapReduce框架依靠數據輸入格式完成輸入規(guī)范檢查(比如輸入文件目錄的檢查)、對數據文件進行輸入分塊(也叫分片,InputSplit),以及提供從輸入分塊(分片)中將數據記錄逐一讀出,并轉化為Map過程的輸入鍵值對等功能

Hadoop提供了豐富的內置數據輸入格式。最常用的數據輸入格式包括:TextInputFormat和KeyValueInputFormat

TextInputFormat是系統(tǒng)默認的數據輸入格式,可以將文本文件分塊并逐行讀入以便Map節(jié)點進行處理。讀入一行時,所產生的主鍵Key就是當前行在整個文本文件中的字節(jié)偏移位置,而value就是該行的內容,它是系統(tǒng)默認的輸入格式,當用戶程序不設置任何數據輸入格式時,系統(tǒng)自動使用這個數據輸入格式。

比如如下文件內容

hello tanggao

hello hadoop

第一行的偏移量為0

第二行偏移量為13

KeyValueTextInputFormat是另一個常用的數據輸入格式,可將一個按照格式逐行存放的文本文件逐行讀出,并自動解析生成相應的key和value

比如

姓名?? ?湯高

年齡?? ?20

則解析出來的

第一行鍵Key為姓名? 值value為湯高

第二行鍵key為年齡 值value為20

注意和TextInputFormat不同,TextInputFormat是偏移量做鍵,整行內容做值


對于一個數據輸入格式,都需要一個對應的RecordReader。RecordReader。主要用于將一個文件中的數據記錄分拆成具體的鍵值對,傳送給Map過程作為鍵值對輸入參數。每一個數據輸入格式都有一個默認的RecordReader。TextInputFormat的默認RecordReader是LineRecordReader,而KeyValueTextInputFormat的默認RecordReader是KeyValueLineRecordReader

當然肯定還有很多數據輸入格式和對應的默認RecordReader 這里就不介紹了,有需要的可以去官網看看



數據輸出格式(OutputFormat)用于描述MapReduce作業(yè)的數據輸出規(guī)范。MapReduce框架依靠數據輸出格式完成輸出規(guī)范檢查(蔽日檢查輸出目錄是否存在),以及提供作業(yè)結果數據輸出等功能

Hadoop提供了豐富的內置數據輸出格式。最常用的數據輸出格式是TextOutputFormat,也是系統(tǒng)默認的數據輸出格式,可以將計算結果以 key+\t+value的形式逐行輸出到文本文件中。

與數據輸入格式中的RecordReader類似,數據輸出格式也提供一個對應的RecordWriter,以便系統(tǒng)明確輸出結果寫入到文件中的具體格式。

TextOutputFormat的默認RecordWriter是LineRecordWriter,其實際操作是將結果數據以key+\t+value的形式輸出到文本文件中。

當然同樣肯定還有很多數據輸出格式和對應的默認RecordWriter

對于自定義數據輸入格式 可以參考已有的數據輸入格式,繼承自它即可,只要重寫GetRecordReader方法得到一個自己寫的RecordReader即可



自定義數據輸入輸出:

輸入:寫自己的inputFormat:繼承InputFormat或者其子類,重寫GetRecordReader獲得默認的RecordReader即可。如果對默認的不滿意,可以寫自己的RecordReader:繼承RecordReader即可

輸出:和上面類似。只是繼承的是InputFormat,也是重寫getRecordWriter

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Zookeeper用于集群主備切換。 YARN讓集群具備更好的擴展性。 Spark沒有存儲能力。 Spark的Ma...
    Yobhel閱讀 7,602評論 0 34
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • 我們一旦有了任務,開始的時間最好是現在開始,不是“越快越好”、“馬上”等等 然而在思維誤區(qū)的我們往往無法在限定的時...
    蔣紅飛閱讀 386評論 0 0
  • (本故事純屬虛構,如有雷同純屬巧合) 第二十三章:撲朔迷離 一個療程的理療做完,姆媽說什么也不愿意再做第二個療程,...
    木禾_520閱讀 1,132評論 17 34
  • 今天是媽媽第一天去上班,早七點四十分走出家門時,看你被奶奶抱著,傻乎乎看著我剛開始眼神是有些迷茫不知所措的,后來你...
    紅豆小妮閱讀 194評論 0 0

友情鏈接更多精彩內容