Файлы последовательности в Hadoop - PullRequest
8 голосов
/ 23 февраля 2011

Как генерируются эти файлы последовательности? Я видел ссылку на файл последовательности здесь,

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

Они написаны с использованием стандартного сериализатора Java? и как мне прочитать файл последовательности?

Ответы [ 2 ]

16 голосов
/ 23 февраля 2011

Файлы последовательностей создаются задачами 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>
4 голосов
/ 14 апреля 2014

Благодаря ответу Льва Хомича моя проблема была решена.

Однако решение уже давно устарело, и новый API предлагает больше функций, а также прост в использовании.

Проверьте исходный код hadoop.io.SequenceFile, нажмите здесь :

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 / инжектором:

------------------------
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: 

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...