2012-01-11 121 views
1

我有一個Sequential文件,其中有鍵值對「org.apache.hadoop.typedbytes.TypedBytesWritable」,我必須提供此文件作爲Hadoop作業的輸入,並且必須在地圖中處理它只要。我的意思是我不需要做任何需要減少的事情。如何讀取Hadoop Sequentil文件作爲Hadoop作業的輸入?

1)如何將FileInputFormat指定爲SequentialFile?

2)map函數的簽名是什麼。

3)我將如何從地圖獲得輸出而不是減少?

回答

2

1)我將如何指定FileInputFormat作爲SequentialFile?

SequenceFileAsBinaryInputFormat設置爲輸入格式。這裏是SequenceFileAsBinaryInputFormat類的code

下面是代碼

JobConf conf = new JobConf(getConf(), getClass()); 
conf.setInputFormat(SequenceFileAsBinaryInputFormat.class); 

2)會有什麼地圖功能的簽名。

該映射將使用BytesWritable作爲鍵和值類型進行調用。

3)如何從地圖獲得輸出而不是減少?

mapred.reduce.tasks屬性設置爲0.地圖的輸出將是作業的最終輸出。


另外,請看SequenceFileAsTextInputFormat。該地圖將以文本作爲鍵和值類型被調用。

+0

謝謝Praveen,我用'job.setInputFormatClass(SequenceFileInputFormat.class);'它會有什麼不同嗎?什麼樣的格式會更好地表現明智? – samarth 2012-01-11 14:38:48

+0

不確定,但認爲SequenceFileAsBinaryInputFormat比SequenceFileInputFormat快。看了@代碼,但它有點複雜,需要時間來理解它。 – 2012-01-11 14:55:52

相關問題