Mapper/Reducer 1 --> (key,value)
/ | \
/ | \
Mapper/Reducer 2 | Mapper/Reducer 4
-> (oKey,oValue) | -> (xKey, xValue)
|
|
Mapper/Reducer 3
-> (aKey, aValue)
MR1 ile birleştirdiğim bir günlük dosyam var. Mapper2, Mapper3, Mapper4, MR1'in çıkışını girdi olarak alır. İşler zincirlenir.Hadoop - çoklu girişleri nasıl kullanır ve azaltır?
MR1 Çıkış:
User {infos of user:[{data here},{more data},{etc}]}
..
MR2 Çıkış:
timestamp idCount
..
MR3 Çıkış:
timestamp loginCount
..
MR4 Çıkış:
timestamp someCount
..
Ben MR2-4 gelen çıkışlarını birleştirmek istediğiniz
: Final output->
timestamp idCount loginCount someCount
..
..
..
w/Pig veya Hive o bir yolu var mı? Java kullanıyorum.
+1 sadece ASCII sanatı için .. –
İkinci adım için çok işlevli bir MR işine sahip olmak, anahtarlarınızın tüm zaman damgaları olduğunu görmek mümkün değil mi? Yani Geçirilen değeri yorumlayıp ona göre ele almalı mı? Redüktörlerin belirli bir anahtar için tüm değerleri alması garanti edilir, bir zaman damgasıyla ilgili tüm bilgileri toplayabilir ve sadece ihtiyacınız olan tüm bileşenlere sahip olduğunuzda yazabilirsiniz. – Quetzalcoatl
Aslında bunu yaptım ve işe yaradı. Bir soru attı: İstediğim şeyi elde etmek için, map-function bağlamında 3 kez yazdım (context.write (key1, value1) - daha derindeki context.write (key2, value2) ve son bağlamda. Yazmak (key3, value3) Bu geçerli mi? – JustTheAverageGirl