2011-12-05 6 views
0

MapFileに出力したいhadoopジョブがありますが、MapFileOutputFormatを持たないhadoop 0.20.203を実行しているクラスタで実行する必要があります。パラレル(それはおそらく非常に)のMapFileにSequenceFileOutputFormat(私は複数のSequenceFilesを含むかもしれないと思う)からの出力を変換するいくつかの方法はありますか? ArrayFileは何ですか(キーがすべて整数で比較的凝縮している場合)MapFileOutputFormat for hadoop 0.20.203

答えて

1

MapFileOutputFormatは0.20.203にあります。 SequenceFileからMapFileへの変換の必要はありません。

FYIでは、SequenceFileをMapFileに変換するには、SequenceFileを開き、MapFile#fixを使用してSequenceFileのインデックスを作成します。これの先駆けは、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

古い/新しいMR APIに関するOPには言及がありませんでした。ところで、古い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 <? extends org.apache.hadoop.mapred.OutputFormat> 1つはmapreduce.OutputFormatで、もう1つはmapred.OutputFormatです。彼らは互換性がありません 編集:申し訳ありませんが、Mapperと私はOutputFormatを意味しました – dspyz