4

将来のMapReduceジョブのセットアップとしてMapReduceジョブを実行せずに、JavaAPIを使用してHDFSでシーケンスファイルを作成および維持しようとしています。MapReduceジョブのすべての入力データを単一のシーケンスファイルに保存したいのですが、データは1日を通して時間の経過とともに追加されます。問題は、SequenceFileが存在する場合、次の呼び出しは、SequenceFileに追加するのではなく、単に上書きすることです。

// fs and conf are set up for HDFS, not as a LocalFileSystem
seqWriter = SequenceFile.createWriter(fs, conf, new Path(hdfsPath),
               keyClass, valueClass, SequenceFile.CompressionType.NONE);
seqWriter.append(new Text(key), new BytesWritable(value));
seqWriter.close();

もう1つの懸念は、自分の形式のファイルを維持できず、そのデータを使用してMapReduceジョブをいつでも起動できるため、1日の終わりにデータをSequenceFileに変換できないことです。

SequenceFileに追加してその形式を維持するための他のAPI呼び出しが見つかりません。また、フォーマットが必要なため、2つのSequenceFileを単純に連結することはできません。

また、SequenceFileに追加する少量のデータに対してオーバーヘッドが高いため、このためにMapReduceジョブを実行することは避けたかったのです。

考えや回避策はありますか?ありがとう。

4

2 に答える 2

6

SequenceFilesApache Hadoop 2.6.1 および 2.7.2 以降のリリースでは、JIRA の機能強化により、既存への追加のサポートが追加されました: https://issues.apache.org/jira/browse/HADOOP-7139

使用例として、テストケースを読むことができます: https://github.com/apache/hadoop/blob/branch-2.7.2/hadoop-common-project/hadoop-common/src/test/java/org/ Apache/hadoop/io/TestSequenceFileAppend.java#L63-L140

CDH5 ユーザーは、バージョン CDH 5.7.1 以降で同じ機能を見つけることができます。

于 2012-09-10T20:02:33.587 に答える
4

申し訳ありませんが、現在、Hadoop FileSystem は追加をサポートしていません。ただし、将来のリリースでの計画があります。

于 2011-04-08T20:34:19.820 に答える