2011-02-23 15 views
7

इन अनुक्रम फ़ाइलों को कैसे उत्पन्न किया जाता है? मैंने यहां अनुक्रम फ़ाइल के बारे में एक लिंक देखा,हडोप में अनुक्रम फ़ाइलें

http://wiki.apache.org/hadoop/SequenceFile 

क्या ये डिफ़ॉल्ट जावा धारावाहिक का उपयोग करके लिखे गए हैं? और मैं अनुक्रम फ़ाइल कैसे पढ़ूं?

+0

यहां कुंजी वर्ग और मूल्य वर्ग क्या है। जहां से उन्हें पहुंचाया जा सकता है? कृपया इस में मेरी मदद करें। अग्रिम में धन्यवाद। –

उत्तर

16

अनुक्रम फ़ाइलें MapReduce कार्यों द्वारा उत्पन्न की जाती हैं और MapReduce नौकरियों के बीच डेटा स्थानांतरित करने के लिए सामान्य प्रारूप के रूप में उपयोग की जा सकती हैं।

आप उन्हें निम्नलिखित तरीके से पढ़ सकते हैं:

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(); 

इसके अलावा, आप SequenceFile.Writer का उपयोग कर अपने आप को करके अनुक्रम फ़ाइलें उत्पन्न कर सकते हैं।

उदाहरण में प्रयुक्त वर्गों निम्नलिखित हैं:

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; 

और hadoop-core Maven निर्भरता के भीतर समाहित कर रहे हैं:

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

लेव Khomich के जवाब के लिए धन्यवाद, मेरी समस्या हल कर दिया गया है।

हालांकि, समाधान थोड़ी देर के लिए हटा दिया गया है और नया एपीआई अधिक सुविधाएं प्रदान करता है और उपयोग करने में आसान भी है। बाहर hadoop.io.SequenceFile के स्रोत कोड

चेक, here पर क्लिक करें:

------------------------ 
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(); 

अतिरिक्त जानकारी के लिए, यहाँ नमूना उत्पादन Nutch/इंजेक्टर द्वारा उत्पन्न डेटा फ़ाइल के खिलाफ चल रहा है

धन्यवाद!

+0

असल में आपका समाधान @ khomich की तुलना में अलग है: ऐसा लगता है कि रीडर कन्स्ट्रक्टर को कॉल में केवल परिवर्तन ही है। यह इंगित करना अच्छा होगा कि बाहर निकलना अच्छा होगा। – javadba

संबंधित मुद्दे