在我的一个 MapReduce 任务中,我将 BytesWritable 覆盖为 KeyBytesWritable,并将 ByteWritable 覆盖为 ValueBytesWritable。然后我使用 SequenceFileOutputFormat 输出结果。
我的问题是当我开始下一个 MapReduce 任务时,我想使用这个 SequenceFile 作为输入文件。那么如何设置作业类,以及 Mapper 类如何识别我之前覆盖的 SequenceFile 中的键和值?
我知道我可以通过 SequenceFile.Reader 读取键和值。
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))
但我不知道如何使用这个 Reader 将键和值作为参数传递给 Mapper 类。如何将 conf.setInputFormat 设置为 SequenceFileInputFormat,然后让 Mapper 获取键和值?
谢谢