我一直在嘗試使用Java API在HDFS上創建和維護序列文件,而未對未來的MapReduce作業運行MapReduce作業作爲設置。我希望將所有MapReduce作業的輸入數據存儲在單個序列文件中,但是數據會隨着時間的推移而被添加。問題是,如果SequenceFile存在,下面的調用將會覆蓋SequenceFile而不是附加到它。HDFS:使用HDFS API附加到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();
另一個值得關注的是,我無法保持我自己格式的文件,並把數據放入一個SequenceFile在一天結束的MapReduce工作可以利用這些數據在任何時候推出。
我找不到任何其他API調用來追加到SequenceFile並保持其格式。由於格式化需要,我也不能簡單地連接兩個SequenceFile。
我也想避免爲此運行MapReduce作業,因爲它對於添加到SequenceFile中的少量數據有很高的開銷。
任何想法或變通?謝謝。
哈哈,那就是我所害怕的。不過,感謝您的幫助。 – 2011-04-10 15:49:35
這仍然是真的嗎?這聽起來像CDH3至少使這個可行嗎? – kee 2012-05-10 19:24:03