具有纯文本输入和avro输出的mapreduce作业

时间:2012-03-15 02:05:28

标签: hadoop avro

我对使用Avro和map reduce非常困惑,但找不到合适的教程。

当输入和输出都是Avro数据文件时,像AvroJob和AvroMapper这样的类似乎可以解决问题。当你的输入只是纯文本时呢?

具体做法是:

我的mapper将LongWritable键和Text值作为输入。它会发出文本键和MyAvroRecord值。

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

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

干杯, 戴夫

2 个答案:

答案 0 :(得分:6)

好的,所以我想出来了。

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

答案 1 :(得分:0)

另一种接近方式可能是:mapper的输出不必是AvroKey和AvroValue。它可以是您的常规输出类型,它们将成为减速器的输入。在reducer中我们可以进行Avro转换。通过将Outputformat类型设置为Avro。

的问候, sujoy