2011-02-23 11 views
7

Bu sıra dosyaları nasıl oluşturulur? Dizi dosyası hakkında bir bağlantı gördüm, burada Bunlar varsayılan Java serializer kullanılarak mı yazılmıştır? ve bir sıra dosyasını nasıl okuyabilirim?Hadoop'ta Sıra Dosyaları

+0

Burada anahtar sınıf ve değer sınıfı nedir. Nereden erişildiler? Plese bana bu konuda yardımcı olur. Şimdiden teşekkürler. –

cevap

16

Sıralama dosyaları MapReduce görevleri tarafından oluşturulur ve MapReduce işleri arasında veri aktarımı için ortak biçim olarak kullanılabilir.

Aşağıdaki şekilde onları okuyabilir:

Configuration config = new Configuration(); 
Path path = new Path(PATH_TO_YOUR_FILE); 
SequenceFile.Reader reader = new SequenceFile.Reader(FileSystem.get(config), path, config); 
WritableComparable key = (WritableComparable) reader.getKeyClass().newInstance(); 
Writable value = (Writable) reader.getValueClass().newInstance(); 
while (reader.next(key, value)) 
    // perform some operating 
reader.close(); 

Ayrıca SequenceFile.Writer kullanarak kendiniz dizisi dosyaları oluşturabilir. takip ediyor örnekte kullanılan

sınıfları:

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.FileSystem; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.SequenceFile; 
import org.apache.hadoop.io.Writable; 
import org.apache.hadoop.io.WritableComparable; 

Ve hadoop-core maven bağımlılık içinde bulunan: Lev Khomich cevabı

<dependency> 
    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-core</artifactId> 
    <version>1.2.1</version> 
</dependency> 
3

sayesinde, sorunum çözüldü. Bununla birlikte, çözüm bir süredir kullanımdan kaldırıldı ve yeni API daha fazla özellik ve kullanım kolaylığı sunuyor. hadoop.io.SequenceFile kaynak koduna göz

Kontrol, here tıklatın:

------------------------ 
https://wiki.openoffice.org/wiki/Ru/FAQ 
Version: 7 
Status: 1 (db_unfetched) 
Fetch time: Sun Apr 13 16:12:59 MDT 2014 
Modified time: Wed Dec 31 17:00:00 MST 1969 
Retries since fetch: 0 
Retry interval: 2592000 seconds (30 days) 
Score: 1.0 
Signature: null 
Metadata: 

------------------------ 
https://www.bankhapoalim.co.il/ 
Version: 7 
Status: 1 (db_unfetched) 
Fetch time: Sun Apr 13 16:12:59 MDT 2014 
Modified time: Wed Dec 31 17:00:00 MST 1969 
Retries since fetch: 0 
Retry interval: 2592000 seconds (30 days) 
Score: 1.0 
Signature: null 
Metadata: 
:

Configuration config = new Configuration(); 
Path path = new Path("/Users/myuser/sequencefile"); 
SequenceFile.Reader reader = new Reader(config, Reader.file(path)); 
WritableComparable key = (WritableComparable) reader.getKeyClass() 
     .newInstance(); 
Writable value = (Writable) reader.getValueClass().newInstance(); 

while (reader.next(key, value)) { 
    System.out.println(key); 
    System.out.println(value); 
    System.out.println("------------------------"); 
} 
reader.close(); 

Ekstra bilgi, burada Nutch/enjektör tarafından oluşturulan veri dosyası karşı çalışan örnek çıktı

Teşekkürler!

+0

Aslında çözümünüz, khomich'e göre daha farklıdır: tek değişiklik, Reader yapıcısına yapılan çağrıdır. Bunu işaret etmek güzel olurdu. – javadba