Hadoop開發中常用工具用法解析
本節和大家學習一下Hadoop開發中常用的工具InputFormat和OutputFormat使用,相信通過本節的學習大家能夠掌握更多關于Hadoop開發方面的知識,讓我們一起來學習吧。首先我們來看一下Hadoop的概念。
Hadoop概念
一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。簡單地說來,Hadoop是一個可以更
容易開發和運行處理大規模數據的軟件平臺。Hadoop實現了一個分布式文件系統(HadoopDistributedFileSystem),簡稱HDFS。HDFS有著高容錯性(fault-tolerent)的特點,并且設計用
來部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(highthroughput)來訪問應用程序的數據,適合那些有著超大數據集(largedataset)的應用程序。HDFS放寬了(relax)POSIX
的要求(requirements)這樣可以流的形式訪問(streamingaccess)文件系統中的數據。下面我們開始介紹Hadoop開發中常用的工具InputFormat和OutputFormat。
InputFormat和OutputFormat
Hadoop中的MapReduce框架依賴InputFormat提供數據,依賴OutputFormat輸出數據;每一個MapReduce程序都離不開他們。
Hadoop提供了一系列InputFormat和OutputFormat方便開發,本文介紹幾種常用的。TextInputFormat用于讀取純文本文件,文件被分為一系列以LF或者CR結束的行,key是每一行的位置
(偏移量,LongWritable類型),value是每一行的內容,Text類型。KeyValueTextInputFormat同樣用于讀取文件,如果行被分隔符(缺省是tab)分割為兩部分,***部分為key,剩下的部分為
value;如果沒有分隔符,整行作為key,value為空SequenceFileInputFormat用于讀取sequencefile。sequencefile是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的記錄。NLineInputFormat0.18.x新加入,可以將文件以行為單位進行split,比如文件的每一行對應一個map。得到的key是每一行
的位置(偏移量,LongWritable類型),value是每一行的內容,Text類型。CompositeInputFormat,用于多個數據源的join。TextOutputFormat,輸出到純文本文件,格式為key+""+value。
NullOutputFormat,hadoop中的/dev/null,將輸出送進黑洞。
SequenceFileOutputFormat,輸出到sequencefile格式文件。MultipleSequenceFileOutputFormat,MultipleTextOutputFormat,根據key將記錄輸出到不同的文件。DBInputFormat和
DBOutputFormat,從DB讀取,輸出到DB,預計將在0.19版本加入。本節關于Hadoop開發中常用InputFormat和OutputFormat相關內容介紹到這里。
【編輯推薦】