2011-12-05 29 views
0

我有一個hadoop作業,我想輸出到MapFile,但我必須在運行hadoop 0.20.203的羣集上運行,該羣集沒有MapFileOutputFormat。有沒有辦法將SequenceFileOutputFormat(我認爲可能包含多個SequenceFile)的輸出轉換爲並行的MapFile(它可能很大)? ArrayFile怎麼樣(如果鍵都是整數並且相對縮合)MapFileOutputFormat for hadoop 0.20.203

回答

1

MapFileOutputFormat是否在0.20.203。不需要從SequenceFile轉換爲MapFile。通過打開一個SequenceFile並使用將爲SequenceFile創建一個索引的MapFile#fix,可以完成將SequenceFile轉換爲MapFile的操作。它的前身是應該對SequenceFile的內容進行排序,可以爲此創建MR作業。 zip中的MapFileFixer.java具有示例代碼。

+0

是的,但它擴展了舊式的org.apache.hadoop.mapred.FileOutputFormat 它與http://hadoop.apache.org/common/docs/r0.20.205.0/api/org/不兼容apache/hadoop/mapreduce/Job.html#setOutputFormatClass(java.lang.Class) – dspyz

+0

在OP中沒有提及舊/新MR API。順便說一下,舊MR API中沒有的新MR API的功能是什麼?除非有特定的要求,否則不應該很難移植到使用舊的API。否則[MapFileOutputFormat](http://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/ java/org/apache/hadoop/mapreduce/lib/output/MapFileOutputFormat.java)與新的MR API配合使用。您可以嘗試使用該代碼構建Hadoop。 –

+0

我的意思是Job.setOutputFormatClass接受一個類型爲Class <?的參數。擴展org.apache.hadoop.mapreduce.OutputFormat> 和MapFileOutputFormat.class類型爲Class <?擴展org.apache.hadoop.mapred.OutputFormat> 一個是mapreduce.OutputFormat,另一個是mapred.OutputFormat。他們不兼容 編輯:對不起,我有Mapper和我的意思OutputFormat – dspyz

相關問題