6

我对使用 Avro 和 map reduce 感到很困惑,并且找不到好的教程。

当输入和输出都是 Avro 数据文件时,像 AvroJob 和 AvroMapper 这样的类似乎是为解决问题而设计的。当您的输入只是纯文本时怎么办?

具体来说:

我的映射器将 LongWritable 键和 Text 值作为输入。它发出 Text 键和 MyAvroRecord 值。

我的 reducer 将 Text 键和 MyAvroRecords 的 Iterator 作为输入,并发出 Text 键和 MyAvroRecord 值。

如何获得将这些 Text 键和 MyAvroRecord 值写入文件的 OutputFormat?

干杯,戴夫

4

2 回答 2

6

好的,所以我想通了。

我需要一个生成 AvroKey 键和 AvroValue 值的映射器,而不是输出 Text 键和 MyAvroRecord 值的映射器。这能够将其结果直接提供给 AvroReducer,我可以只使用 AvroJob.setOutputSchema() 来处理输出(我根本不需要实现 OutputFormat)。

于 2012-03-21T03:11:07.693 回答
0

另一种接近的方法可以是:mapper 的输出不必是 AvroKey 和 AvroValue。它可以是你的一般输出类型,成为你的 reducer 的输入。在 reducer 中,我们可以进行 Avro 转换。通过将输出格式类型设置为 Avro。

问候, sujoy

于 2014-01-22T14:11:22.600 回答