Package org.apache.hadoop.mapred.join
Class CompositeRecordReader<K extends WritableComparable,V extends Writable,X extends Writable>
java.lang.Object
org.apache.hadoop.mapred.join.CompositeRecordReader<K,V,X>
- All Implemented Interfaces:
Configurable
- Direct Known Subclasses:
JoinRecordReader,MultiFilterRecordReader
@Public
@Stable
public abstract class CompositeRecordReader<K extends WritableComparable,V extends Writable,X extends Writable>
extends Object
implements Configurable
A RecordReader that can effect joins of RecordReaders sharing a common key
type and partitioning.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final CompositeRecordReader<K,V, X>.org.apache.hadoop.mapred.join.CompositeRecordReader.JoinCollector protected final ComposableRecordReader<K,? extends V>[] -
Constructor Summary
ConstructorsConstructorDescriptionCompositeRecordReader(int id, int capacity, Class<? extends WritableComparator> cmpcl) Create a RecordReader withcapacitychildren to positionidin the parent reader. -
Method Summary
Modifier and TypeMethodDescriptionvoidIf key provided matches that of this Composite, give JoinCollector iterator over values it may emit.voidadd(ComposableRecordReader<K, ? extends V> rr) Add a RecordReader to this collection.voidclose()Close all child RRs.protected abstract booleancombine(Object[] srcs, TupleWritable value) intcompareTo(ComposableRecordReader<K, ?> other) Implement Comparable contract (compare key of join or head of heap with that of another).protected TupleWritableCreate a value to be used internally for joins.Create a new key value common to all child RRs.protected voidfillJoinCollector(K iterkey) For all child RRs offering the key provided, obtain an iterator at that position in the JoinCollector.protected WritableComparatorReturn comparator defining the ordering for RecordReaders in this composite.getConf()Return the configuration used by this object.protected abstract ResetableIterator<X>Obtain an iterator over the child RRs apropos of the value type ultimately emitted from this join.longgetPos()Unsupported (returns zero in all cases).floatReport progress as the minimum of all child RR progress.protected PriorityQueue<ComposableRecordReader<K,?>> Return sorted list of RecordReaders for this composite.booleanhasNext()Return true if it is possible that this could emit more values.intid()Return the position in the collector this class occupies.key()Return the key for the current join or the value at the top of the RecordReader heap.voidClone the key at the top of this RR into the given object.voidsetConf(Configuration conf) Set the configuration to be used by this object.voidPass skip key to child RRs.
-
Field Details
-
jc
protected final CompositeRecordReader<K extends WritableComparable,V extends Writable, jcX extends Writable>.org.apache.hadoop.mapred.join.CompositeRecordReader.JoinCollector -
kids
protected final ComposableRecordReader<K extends WritableComparable,? extends V extends Writable>[] kids
-
-
Constructor Details
-
CompositeRecordReader
public CompositeRecordReader(int id, int capacity, Class<? extends WritableComparator> cmpcl) throws IOException Create a RecordReader withcapacitychildren to positionidin the parent reader. The id of a root CompositeRecordReader is -1 by convention, but relying on this is not recommended.- Throws:
IOException
-
-
Method Details
-
combine
-
id
public int id()Return the position in the collector this class occupies. -
setConf
Set the configuration to be used by this object.- Specified by:
setConfin interfaceConfigurable- Parameters:
conf- configuration to be used
-
getConf
Return the configuration used by this object.- Specified by:
getConfin interfaceConfigurable- Returns:
- Configuration
-
getRecordReaderQueue
Return sorted list of RecordReaders for this composite. -
getComparator
Return comparator defining the ordering for RecordReaders in this composite. -
add
Add a RecordReader to this collection. The id() of a RecordReader determines where in the Tuple its entry will appear. Adding RecordReaders with the same id has undefined behavior.- Throws:
IOException
-
key
Return the key for the current join or the value at the top of the RecordReader heap. -
key
Clone the key at the top of this RR into the given object.- Throws:
IOException
-
hasNext
public boolean hasNext()Return true if it is possible that this could emit more values. -
skip
Pass skip key to child RRs.- Throws:
IOException
-
getDelegate
Obtain an iterator over the child RRs apropos of the value type ultimately emitted from this join. -
accept
public void accept(org.apache.hadoop.mapred.join.CompositeRecordReader.JoinCollector jc, K key) throws IOException If key provided matches that of this Composite, give JoinCollector iterator over values it may emit.- Throws:
IOException
-
fillJoinCollector
For all child RRs offering the key provided, obtain an iterator at that position in the JoinCollector.- Throws:
IOException
-
compareTo
Implement Comparable contract (compare key of join or head of heap with that of another). -
createKey
Create a new key value common to all child RRs.- Throws:
ClassCastException- if key classes differ.
-
createInternalValue
Create a value to be used internally for joins. -
getPos
Unsupported (returns zero in all cases).- Throws:
IOException
-
close
Close all child RRs.- Throws:
IOException
-
getProgress
Report progress as the minimum of all child RR progress.- Throws:
IOException
-