RecordReader.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 java.io.DataInput;
  21. /**
  22.  * <code>RecordReader</code> reads &lt;key, value&gt; pairs from an 
  23.  * {@link InputSplit}.
  24.  *   
  25.  * <p><code>RecordReader</code>, typically, converts the byte-oriented view of 
  26.  * the input, provided by the <code>InputSplit</code>, and presents a 
  27.  * record-oriented view for the {@link Mapper} & {@link Reducer} tasks for 
  28.  * processing. It thus assumes the responsibility of processing record 
  29.  * boundaries and presenting the tasks with keys and values.</p>
  30.  * 
  31.  * @see InputSplit
  32.  * @see InputFormat
  33.  */
  34. public interface RecordReader<K, V> {
  35.   /** 
  36.    * Reads the next key/value pair from the input for processing.
  37.    *
  38.    * @param key the key to read data into
  39.    * @param value the value to read data into
  40.    * @return true iff a key/value was read, false if at EOF
  41.    */      
  42.   boolean next(K key, V value) throws IOException;
  43.   
  44.   /**
  45.    * Create an object of the appropriate type to be used as a key.
  46.    * 
  47.    * @return a new key object.
  48.    */
  49.   K createKey();
  50.   
  51.   /**
  52.    * Create an object of the appropriate type to be used as a value.
  53.    * 
  54.    * @return a new value object.
  55.    */
  56.   V createValue();
  57.   /** 
  58.    * Returns the current position in the input.
  59.    * 
  60.    * @return the current position in the input.
  61.    * @throws IOException
  62.    */
  63.   long getPos() throws IOException;
  64.   /** 
  65.    * Close this {@link InputSplit} to future operations.
  66.    * 
  67.    * @throws IOException
  68.    */ 
  69.   public void close() throws IOException;
  70.   /**
  71.    * How much of the input has the {@link RecordReader} consumed i.e.
  72.    * has been processed by?
  73.    * 
  74.    * @return progress from <code>0.0</code> to <code>1.0</code>.
  75.    * @throws IOException
  76.    */
  77.   float getProgress() throws IOException;
  78. }