我有一個Sequential文件,其中有鍵值對「org.apache.hadoop.typedbytes.TypedBytesWritable」,我必須提供此文件作爲Hadoop作業的輸入,並且必須在地圖中處理它只要。我的意思是我不需要做任何需要減少的事情。如何讀取Hadoop Sequentil文件作爲Hadoop作業的輸入?
1)如何將FileInputFormat指定爲SequentialFile?
2)map函數的簽名是什麼。
3)我將如何從地圖獲得輸出而不是減少?
我有一個Sequential文件,其中有鍵值對「org.apache.hadoop.typedbytes.TypedBytesWritable」,我必須提供此文件作爲Hadoop作業的輸入,並且必須在地圖中處理它只要。我的意思是我不需要做任何需要減少的事情。如何讀取Hadoop Sequentil文件作爲Hadoop作業的輸入?
1)如何將FileInputFormat指定爲SequentialFile?
2)map函數的簽名是什麼。
3)我將如何從地圖獲得輸出而不是減少?
1)我將如何指定FileInputFormat作爲SequentialFile?
將SequenceFileAsBinaryInputFormat設置爲輸入格式。這裏是SequenceFileAsBinaryInputFormat類的code。
下面是代碼
JobConf conf = new JobConf(getConf(), getClass());
conf.setInputFormat(SequenceFileAsBinaryInputFormat.class);
2)會有什麼地圖功能的簽名。
該映射將使用BytesWritable作爲鍵和值類型進行調用。
3)如何從地圖獲得輸出而不是減少?
將mapred.reduce.tasks
屬性設置爲0.地圖的輸出將是作業的最終輸出。
另外,請看SequenceFileAsTextInputFormat。該地圖將以文本作爲鍵和值類型被調用。
謝謝Praveen,我用'job.setInputFormatClass(SequenceFileInputFormat.class);'它會有什麼不同嗎?什麼樣的格式會更好地表現明智? – samarth 2012-01-11 14:38:48
不確定,但認爲SequenceFileAsBinaryInputFormat比SequenceFileInputFormat快。看了@代碼,但它有點複雜,需要時間來理解它。 – 2012-01-11 14:55:52