2012-03-15 14 views
6

Harita azaltma ile Avro kullanmak konusunda oldukça kafa karıştırıyorum ve takip edeceğim eğiticileri bulamıyorum.Düz metin girişi ve avro çıkışı ile bir mapreduce işi

Görünüşe göre AvroJob ve AvroMapper gibi sınıflar, hem giriş hem de çıkış Avro veri dosyaları olduğunda sorunlara yöneliktir. Girişiniz sadece düz metin olduğunda ne olacak?

Özellikle:

Benim mapper girdi olarak LongWritable anahtarları ve Metin değerlerini alır. Metin tuşlarını ve MyAvroRecord değerlerini yayar.

Redüktörüm Metin tuşlarını ve bir MyAvroRecords Iteratörünü giriş olarak alır ve Metin tuşlarını ve MyAvroRecord değerlerini yayar.

Bu Text tuşlarını ve MyAvroRecord değerlerini dosyaya yazacak bir OutputFormat nasıl alabilirim?

Alkış, Dave

cevap

6

Tamam, bu yüzden bu anladım.

Metin tuşları ve MyAvroRecord değerlerini veren bir eşleyiciden ziyade, AvroKey tuşlarını ve AvroValue değerlerini üreten bir dosyaya ihtiyacım vardı. Bu, sonuçlarını doğrudan bir AvroReducer'a aktarabilmişti ve çıktıyı işlemek için AvroJob.setOutputSchema() yöntemini kullanabiliyordum (bir OutputFormat'ı hiç uygulamak zorunda kalmamıştım).

+0

Merhaba Dave, ters fiil yapmaya çalışıyorum. Girişim metin ve çıktı Genel Kayıt. AvroJob için bir Avro Giriş Şeması oluşturmaya çalışıyorum ve daha sonra çıktı şemasını Genel Kaydın şeması olarak ayarlamaya çalışıyorum. Ancak, giriş şemasını nasıl açacağımı bilmiyorum, böylece AvroJob bunu anlayabiliyor. SetInputSchema() öğesini hiçbir şey olarak kullanmalı mıyım? –

0

Yaklaşmanın başka bir yolu şudur: Haritacının çıktısı AvroKey ve AvroValue olamaz. Redüktörünüze giren genel çıkış tipleriniz olabilir. Redüktörde Avro dönüşümünü yapabiliriz. Outputformat türünü Avro olarak ayarlayarak.

Saygılarımızla, Sujoy