我对使用Avro和map reduce非常困惑,但找不到合适的教程。
当输入和输出都是Avro数据文件时,像AvroJob和AvroMapper这样的类似乎可以解决问题。当你的输入只是纯文本时呢?
具体做法是:
我的mapper将LongWritable键和Text值作为输入。它会发出文本键和MyAvroRecord值。
我的reducer使用Text键和MyAvroRecords的Iterator作为输入,并发出Text键和MyAvroRecord值。
如何获得将这些Text键和MyAvroRecord值写入文件的OutputFormat?
干杯, 戴夫
答案 0 :(得分:6)
好的,所以我想出来了。
我需要一个产生AvroKey键和AvroValue值的映射器,而不是输出Text键和MyAvroRecord值的映射器。这能够将其结果直接提供给AvroReducer,我可以使用AvroJob.setOutputSchema()来处理输出(我根本不需要实现OutputFormat)。
答案 1 :(得分:0)
另一种接近方式可能是:mapper的输出不必是AvroKey和AvroValue。它可以是您的常规输出类型,它们将成为减速器的输入。在reducer中我们可以进行Avro转换。通过将Outputformat类型设置为Avro。
的问候, sujoy