这些序列文件是如何生成的?我在这里看到了关于序列文件的链接,
http://wiki.apache.org/hadoop/SequenceFile
这些是使用默认的Java序列化器编写的吗?以及如何读取序列文件?
序列文件由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依赖项中:
org.apache.hadoop hadoop-core 1.2.1