SequenceFileAsTextRecordReader.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.mapred;
  19. import java.io.IOException;
  20. import org.apache.hadoop.conf.Configuration;
  21. import org.apache.hadoop.io.Text;
  22. import org.apache.hadoop.io.Writable;
  23. import org.apache.hadoop.io.WritableComparable;
  24. /**
  25.  * This class converts the input keys and values to their String forms by calling toString()
  26.  * method. This class to SequenceFileAsTextInputFormat class is as LineRecordReader
  27.  * class to TextInputFormat class.
  28.  */
  29. public class SequenceFileAsTextRecordReader
  30.   implements RecordReader<Text, Text> {
  31.   
  32.   private final SequenceFileRecordReader<WritableComparable, Writable>
  33.   sequenceFileRecordReader;
  34.   private WritableComparable innerKey;
  35.   private Writable innerValue;
  36.   public SequenceFileAsTextRecordReader(Configuration conf, FileSplit split)
  37.     throws IOException {
  38.     sequenceFileRecordReader =
  39.       new SequenceFileRecordReader<WritableComparable, Writable>(conf, split);
  40.     innerKey = sequenceFileRecordReader.createKey();
  41.     innerValue = sequenceFileRecordReader.createValue();
  42.   }
  43.   public Text createKey() {
  44.     return new Text();
  45.   }
  46.   
  47.   public Text createValue() {
  48.     return new Text();
  49.   }
  50.   /** Read key/value pair in a line. */
  51.   public synchronized boolean next(Text key, Text value) throws IOException {
  52.     Text tKey = key;
  53.     Text tValue = value;
  54.     if (!sequenceFileRecordReader.next(innerKey, innerValue)) {
  55.       return false;
  56.     }
  57.     tKey.set(innerKey.toString());
  58.     tValue.set(innerValue.toString());
  59.     return true;
  60.   }
  61.   
  62.   public float getProgress() throws IOException {
  63.     return sequenceFileRecordReader.getProgress();
  64.   }
  65.   
  66.   public synchronized long getPos() throws IOException {
  67.     return sequenceFileRecordReader.getPos();
  68.   }
  69.   
  70.   public synchronized void close() throws IOException {
  71.     sequenceFileRecordReader.close();
  72.   }
  73.   
  74. }