3

我必须用 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?

4

0 回答 0