从Hadoop中的管道发出avro格式

时间:2013-10-16 09:22:20

标签: c++ hadoop pipe avro

我必须使用C ++编写Hadoop程序并处理复杂的输出值结构。 不幸的是,我无法弄清楚如何在MapReduce中以Avro格式发出这种结构。 有一些像DataFileWriter这样的作家,它们对我很有用。但就HDFS而言,这一切都没有意义。

我现在如何发布结构:

IOSerializer serializer;
context.emit(key, serializer.toString(output));

我自己写的这个自定义toString方法(对不起名字,我完全来自Java世界)。 这只是String的自定义序列化。我真的想要一些互操作性,并决定使用Avro。

这是将Avro写入文件的代码:

avro::DataFileWriter<fusion_solve::graph> dfw("test.bin", schema);
dfw.write(output);
dfw.close();

我希望能做的是这样的事情:

IOSerializer serializer;
context.emit(serializer.toAvro(key, output));

目前我很乐意将普通的JSON字符串作为输出,以便稍后进行转换。 对我来说另一个选择是用Java编写自定义RecordWriter。但是在这种情况下我应该使用哪种类型的输入数据,JSON?

0 个答案:

没有答案