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