2011-04-08 88 views
4

我一直在嘗試使用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中的少量數據有很高的開銷。

任何想法或變通?謝謝。

回答

4

對不起,目前Hadoop FileSystem不支持附加。但是在未來的版本中有計劃。

+0

哈哈,那就是我所害怕的。不過,感謝您的幫助。 – 2011-04-10 15:49:35

+0

這仍然是真的嗎?這聽起來像CDH3至少使這個可行嗎? – kee 2012-05-10 19:24:03