将来の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ジョブを実行することは避けたかったのです。
考えや回避策はありますか?ありがとう。