Class HashJoinStream
- java.lang.Object
-
- org.apache.solr.client.solrj.io.stream.TupleStream
-
- org.apache.solr.client.solrj.io.stream.HashJoinStream
-
- All Implemented Interfaces:
Closeable
,Serializable
,AutoCloseable
,Expressible
,MapSerializable
,MapWriter
,NavigableObject
- Direct Known Subclasses:
OuterHashJoinStream
public class HashJoinStream extends TupleStream implements Expressible
Takes two streams (fullStream and hashStream) and joins them similar to an InnerJoinStream. The difference in a HashJoinStream is that the tuples in the hashStream will all be read and hashed when this stream is opened. This provides a few optimizations iff the hashStream has a relatively small number of documents. You are expected to provide a set of fields for which the hash will be calculated from. If a tuple does not contain a value (ie, null) for one of the fields the hash is being computed on then that tuple will not be considered a match to anything. Ie, all fields which are part of the hash must have a non-null value.- Since:
- 6.0.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.client.solrj.io.stream.TupleStream
TupleStream.IgnoreException
-
Nested classes/interfaces inherited from interface org.apache.solr.common.MapWriter
MapWriter.EntryWriter
-
-
Field Summary
Fields Modifier and Type Field Description protected TupleStream
fullStream
protected HashMap<String,List<Tuple>>
hashedTuples
protected TupleStream
hashStream
protected List<String>
leftHashOn
protected List<String>
rightHashOn
protected String
workingFullHash
protected Tuple
workingFullTuple
protected int
workngHashSetIdx
-
Constructor Summary
Constructors Constructor Description HashJoinStream(StreamExpression expression, StreamFactory factory)
HashJoinStream(TupleStream fullStream, TupleStream hashStream, List<String> hashOn)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<TupleStream>
children()
void
close()
protected String
computeHash(Tuple tuple, List<String> hashOn)
int
getCost()
StreamComparator
getStreamSort()
void
open()
Tuple
read()
void
setStreamContext(StreamContext context)
Explanation
toExplanation(StreamFactory factory)
Returns an explanation about the stream objectStreamExpression
toExpression(StreamFactory factory)
-
Methods inherited from class org.apache.solr.client.solrj.io.stream.TupleStream
getShards, getShards, getStreamNodeId, writeMap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.solr.common.NavigableObject
_forEachEntry, _forEachEntry, _forEachEntry, _get, _get, _getStr, _getStr, _size
-
-
-
-
Field Detail
-
hashStream
protected TupleStream hashStream
-
fullStream
protected TupleStream fullStream
-
workingFullTuple
protected Tuple workingFullTuple
-
workingFullHash
protected String workingFullHash
-
workngHashSetIdx
protected int workngHashSetIdx
-
-
Constructor Detail
-
HashJoinStream
public HashJoinStream(TupleStream fullStream, TupleStream hashStream, List<String> hashOn) throws IOException
- Throws:
IOException
-
HashJoinStream
public HashJoinStream(StreamExpression expression, StreamFactory factory) throws IOException
- Throws:
IOException
-
-
Method Detail
-
toExpression
public StreamExpression toExpression(StreamFactory factory) throws IOException
- Specified by:
toExpression
in interfaceExpressible
- Throws:
IOException
-
toExplanation
public Explanation toExplanation(StreamFactory factory) throws IOException
Description copied from interface:Expressible
Returns an explanation about the stream object- Specified by:
toExplanation
in interfaceExpressible
- Specified by:
toExplanation
in classTupleStream
- Parameters:
factory
- Stream factory for this, contains information about the function name- Returns:
- Explanation about this stream object containing explanations of any child stream objects
- Throws:
IOException
- throw on any error
-
setStreamContext
public void setStreamContext(StreamContext context)
- Specified by:
setStreamContext
in classTupleStream
-
children
public List<TupleStream> children()
- Specified by:
children
in classTupleStream
-
open
public void open() throws IOException
- Specified by:
open
in classTupleStream
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classTupleStream
- Throws:
IOException
-
read
public Tuple read() throws IOException
- Specified by:
read
in classTupleStream
- Throws:
IOException
-
getStreamSort
public StreamComparator getStreamSort()
- Specified by:
getStreamSort
in classTupleStream
-
getCost
public int getCost()
- Overrides:
getCost
in classTupleStream
-
-