001/**002 * Licensed to the Apache Software Foundation (ASF) under one003 * or more contributor license agreements. See the NOTICE file004 * distributed with this work for additional information005 * regarding copyright ownership. The ASF licenses this file006 * to you under the Apache License, Version 2.0 (the007 * "License"); you may not use this file except in compliance008 * with the License. You may obtain a copy of the License at009 *010 * http://www.apache.org/licenses/LICENSE-2.0011 *012 * Unless required by applicable law or agreed to in writing, software013 * distributed under the License is distributed on an "AS IS" BASIS,014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.015 * See the License for the specific language governing permissions and016 * limitations under the License.017 */018019package org.apache.hadoop.mapred.join;020021import java.io.IOException;022023import org.apache.hadoop.classification.InterfaceAudience;024import org.apache.hadoop.classification.InterfaceStability;025import org.apache.hadoop.io.Writable;026import org.apache.hadoop.io.WritableComparable;027import org.apache.hadoop.mapred.RecordReader;028029/**030 * Additional operations required of a RecordReader to participate in a join.031 */032@InterfaceAudience.Public033@InterfaceStability.Stable034public interface ComposableRecordReader<K extends WritableComparable,035 V extends Writable>036 extends RecordReader<K,V>, Comparable<ComposableRecordReader<K,?>> {037038 /**039 * Return the position in the collector this class occupies.040 */041 int id();042043 /**044 * Return the key this RecordReader would supply on a call to next(K,V)045 */046 K key();047048 /**049 * Clone the key at the head of this RecordReader into the object provided.050 */051 void key(K key) throws IOException;052053 /**054 * Returns true if the stream is not empty, but provides no guarantee that055 * a call to next(K,V) will succeed.056 */057 boolean hasNext();058059 /**060 * Skip key-value pairs with keys less than or equal to the key provided.061 */062 void skip(K key) throws IOException;063064 /**065 * While key-value pairs from this RecordReader match the given key, register066 * them with the JoinCollector provided.067 */068 void accept(CompositeRecordReader.JoinCollector jc, K key) throws IOException;069}