2013-12-20 23 views
0

我想這樣做:protobuf - > byte array - > | HTTP post | - >字節數組 - >序列化到本地文件 - > Hadoop中的MapReduce。如何使用SequenceFileInputFormat將字節數組序列化爲本地文件

  1. 我想第一種方式做的是使用的BufferedWriter/FileWriter的以字節數組作爲字符串寫入與「\ n」或其他分隔符本地文件。這種方式的問題是寫入的字節數組可能包含'\ n'或其他分隔符。

  2. byte array - > protobuf - > json,然後將json序列化爲一個文件。它會遇到與上面相同的問題。

  3. 在Hadoop中有一個名爲SequenceFileInputFormat的InputFormat,它似乎被用在Hadoop的MapReduce中。我的問題是如何將字節數組序列化爲本地格式的文件?

或者任何不同的方式可以解決我的問題?謝謝。

回答

0

好的,問題現在已經解決了。

org.apache.hadoop.io.SequenceFile.Writer適合我。

Configuration conf = new Configuration(); 
LocalFileSystem fs = FileSystem.getLocal(conf); 
SequenceFile.Writer writer = SequenceFile.createWriter(fs, conf, new Path("~/test"), LongWritable.class, BytesWritable.class); 
LongWritable key = new LongWritable(1L); 
BytesWritable val = new BytesWritable(protobufObject.toByteArray()); 
writer.append(key, val); 
writer.close(); 
相關問題