Hadoop 用に C++ でプログラミングする必要があり、出力値の複雑な構造を扱っています。残念ながら、MapReduce でこの構造を Avro 形式で出力する方法がわかりません。DataFileWriter のようなライターがいくつかあり、私にとってはうまく機能します。しかし、HDFS に関しては、すべてが意味を成すわけではありません。
構造を今どのように出力するか:
IOSerializer serializer;
context.emit(key, serializer.toString(output));
このカスタム toString メソッドは、私が自分で作成したものです (名前については申し訳ありません。私は完全に Java の世界から来ました)。これは、文字列へのカスタム シリアル化にすぎません。ここでは相互運用性が必要で、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 文字列を出力として取得し、後で変換できることを嬉しく思います。私にとってのもう 1 つのオプションは、Java でカスタム RecordWriter を作成することです。しかし、この場合、JSON とどのタイプの入力データを使用すればよいでしょうか?