2013-06-08 19 views
5

Her biri 1 MB'lık 2 adet metin dosyası, HDFS'de MapReduce programımın girdisi olarak saklanır. Aşağıdaki satırda, harita() için giriş çiftini göz önünde bulundururuz.Harita() için LongWritable tuş girişi nedir?

class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 

LongWritable anahtarı nedir? MapReduce tarafından nasıl kabul edilir? Giriş dosyasındaki her metin satırı bir anahtar veya tek bir anahtarın dosyadaki tüm metin için (yani, bir kerede tüm satırlar) varsayıldığını varsayar mı?

cevap

-1

O bayt hattının dengeleniyor ya da satır numarası

+1

Cevabınızın 'veya' bölümünü atlamış olmalısınız. ofset satır numarası değil. Çizginin bayt pozisyonu. – Tariq

+0

Bunu anlamıyorum. Bir satırın ofseti, o satırın numarasıyla aynı mıdır? Bunu anlamamda bana yardım etmeni isterim. – Tariq

+0

@ChrisGerken hatalı – slater

6

1- burada LongWritable anahtar dosyasında bu satırın position ve not satır numarası anlamına hattın offset olduğunu söyleyebiliriz. Bunlar arasında a lot arasındaki fark vardır.

2- MapReduce çerçevesi tarafından not assumed'dir. Karar vermek için MR işinde kullandığınız InputFormat'un görevidir. Varsayılan, durumunuzdaki gibi anahtarın satır olarak bayt ofsetini veren TextInputFormat'dur.

3- Evet, yine InputFormat öğenize bağlıdır. TextInputFormat kullanıyorsanız, her satır, anahtar olarak ofseti ile değer olarak ele alınacaktır. Ancak, tüm dosya için tek bir anahtar ve bu dosyanın tüm satırlarının değer olarak tek bir anahtarını verebileceğiniz kendi özel InputFormat'ınız olabilir.

+1

pozisyonu açıkça sayı değil. downvote'un nedenini alabilir miyim? IMHO, mapreduce hakkında öğrendiklerime dayanan doğru tanım. Ayrıca, bana atıfta bulunduğunuz belgelere de işaret edebilir misiniz? Bunu gerçekten takdir ediyorum. teşekkür ederim. – Tariq