2012-03-15 93 views
6

我对使用Avro和map reduce非常困惑,无法找到好的教程。使用纯文本输入和avro输出的mapreduce作业

似乎像AvroJob和AvroMapper这样的类在输入和输出都是Avro数据文件时都会遇到问题。什么时候你的输入只是纯文本?

具体来说:

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

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

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

干杯,戴夫

回答

6

好了,我想通了这一点。

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

+0

戴夫你好,我想做某事相反。我的输入是文本,输出是通用记录。我尝试为AvroJob设置Avro输入模式,然后将输出模式设置为通用记录的模式。但我不知道如何包装输入模式,以便AvroJob可以理解它是纯文本。我应该只使用setInputSchema()什么都没有? – 2014-05-02 01:00:46

0

接近的另一种方法是:mapper的输出不需要是AvroKey和AvroValue。它可以是您的一般输出类型,它可以输入到您的减速器中。在减速器中,我们可以进行Avro转换。通过将Outputformat类型设置为Avro。

问候, sujoy