2011-07-17 23 views
6

Hadoop Map Reduce kullanarak wikipedia veri döküntüleri üzerinde araştırma yapmak için çalışıyorum (bz2 formatında sıkıştırılmış). Bu çöplükler çok büyük olduğu için (5 T), xml verilerini HDFS'ye açamıyorum ve sadece hadoop'un sağladığı StreamXmlRecordReader'ı kullanamıyorum. Hadoop, sıkıştırılmamış bz2 dosyalarını desteklemez, ancak sayfaları rasgele ayırır ve bunları eşleştiriciye gönderir. Bu xml olduğundan, etiketler olarak bölmelere ihtiyacımız var. Haloop tarafından birlikte sağlanan bz2 dekompresyon ve akış xml kayıt okuyucusunu kullanmak için zaten var mı?Sıkıştırılmış bz2 (bzip2) nasıl okunur? Wikipedia dump'lar hadoop haritası için akış xml kayıt okuyucusunu azaltır

+0

Sayfaları neden etiketlere göre ayırmanız gerekiyor? – svick

+0

Analiz etmemiz gereken verileri elde etmek için python'da ayrıştırıcı kullanabilmek için etiketlerine bölünmelerini istiyoruz (tüm sayfaların önceki revizyonları ve metinleri üzerinde farklı analizler yapıyor olacağız). –

+0

tarafından bölme etiketleri 100Gb uzunluğunda olan çok sayıda sayfa olduğundan, mümkün olmayacaktır. Yayımladığımız InputReader hakkında tam cevabımı görün. – DrDee

cevap

0

Sorununuz, açıklanan here ile aynıdır. Bu yüzden cevabım da aynısı TextInputFormat üzerinde kendi varyasyonunuzu oluşturmalısınız. Burada, mantıksal bir çizginin başlangıcını görene kadar satırları atlayan yeni bir RecordReader yaparsınız.

7

Wikimedia Foundation, sadece sıkıştırılmış tam döküm dosyalarını bz2 dosyalarını okuyabilen ve bunu haritalayıcılarınıza gönderebilen Hadoop Streaming arabirimi için bir InputReader yayınladı. Bir eşleştiriciye gönderilmekte olan birim tam sayfa değil, iki revizyon (gerçekte iki revizyonda bir fark yaratabilirsiniz). Bu ilk sürümdür ve eminim ki bazı hatalar olacak, ancak lütfen bir sıkma verin ve test etmemize yardımcı olun.

Bu InputReader, Hadoop 0.21'in bz2 dosyaları için akış desteği olduğundan Hadoop 0.21'i gerektirir. Kaynak kodu şu adreste bulunabilir: https://github.com/whym/wikihadoop

İlgili konular