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,org.apache.solr.common.MapSerializable,org.apache.solr.common.MapWriter,org.apache.solr.common.NavigableObject,org.noggit.JSONWriter.Writable
- 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
-
-
Field Summary
Fields Modifier and Type Field Description protected TupleStreamfullStreamprotected HashMap<String,List<Tuple>>hashedTuplesprotected TupleStreamhashStreamprotected List<String>leftHashOnprotected List<String>rightHashOnprotected StringworkingFullHashprotected TupleworkingFullTupleprotected intworkngHashSetIdx
-
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()voidclose()protected StringcomputeHash(Tuple tuple, List<String> hashOn)intgetCost()StreamComparatorgetStreamSort()voidopen()Tupleread()voidsetStreamContext(StreamContext context)ExplanationtoExplanation(StreamFactory factory)Returns an explanation about the stream objectStreamExpressiontoExpression(StreamFactory factory)-
Methods inherited from class org.apache.solr.client.solrj.io.stream.TupleStream
getShards, getShards, getStreamNodeId, writeMap
-
-
-
-
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:
toExpressionin interfaceExpressible- Throws:
IOException
-
toExplanation
public Explanation toExplanation(StreamFactory factory) throws IOException
Description copied from interface:ExpressibleReturns an explanation about the stream object- Specified by:
toExplanationin interfaceExpressible- Specified by:
toExplanationin 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:
setStreamContextin classTupleStream
-
children
public List<TupleStream> children()
- Specified by:
childrenin classTupleStream
-
open
public void open() throws IOException- Specified by:
openin classTupleStream- Throws:
IOException
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein classTupleStream- Throws:
IOException
-
read
public Tuple read() throws IOException
- Specified by:
readin classTupleStream- Throws:
IOException
-
getStreamSort
public StreamComparator getStreamSort()
- Specified by:
getStreamSortin classTupleStream
-
getCost
public int getCost()
- Overrides:
getCostin classTupleStream
-
-