public interface ScanJob extends Cloneable
Modifier and Type | Method and Description |
---|---|
ScanJob |
clone()
Returns a clone of this ScanJob.
|
default Predicate<StaticBuffer> |
getKeyFilter()
A predicate that determines whether
process(org.janusgraph.diskstorage.StaticBuffer, java.util.Map, ScanMetrics)
should be invoked for the given key. |
List<SliceQuery> |
getQueries()
Returns one or more
SliceQuery instances belonging to this ScanJob . |
void |
process(StaticBuffer key,
Map<SliceQuery,EntryList> entries,
ScanMetrics metrics)
Run this
ScanJob 's computation on the supplied row-key and entries. |
default void |
workerIterationEnd(ScanMetrics metrics)
Invoked after a block of computation (i.e.
|
default void |
workerIterationStart(Configuration jobConfiguration,
Configuration graphConfiguration,
ScanMetrics metrics)
Invoked before a block of computation (i.e.
|
default void workerIterationStart(Configuration jobConfiguration, Configuration graphConfiguration, ScanMetrics metrics)
VertexProgram.workerIterationStart(Memory)
This method may not be called if there is no data to be processed. Correspondingly, the end method won't be called either.
No-op default implementation.jobConfiguration
- configuration for this particular jobgraphConfiguration
- configuration options for the entire graph against which this job is executedmetrics
- ScanMetrics
for this jobdefault void workerIterationEnd(ScanMetrics metrics)
VertexProgram.workerIterationEnd(Memory)
This method may not be called if there is no data to be processed. Correspondingly, the start method won't be called either.
No-op default implementation.metrics
- ScanMetrics
for this jobvoid process(StaticBuffer key, Map<SliceQuery,EntryList> entries, ScanMetrics metrics)
ScanJob
's computation on the supplied row-key and entries.
This method will be called by a client of this interface if and only if both of the following criteria are satisfied:
getKeyFilter()
must evaluate to true
on the key
.
entries
parameter must contain an entry whose key is the first
SliceQuery
returned by getQueries()
and whose value
is an EntryList
with at least size one. In other words, the
initial query in this job's query list must have matched at least once.
Implementations may assume these two conditions are satisfied. Calling this method when either of these two conditions is false yields undefined behavior.
It is the caller's responsibility to construct an entries
map that
maps each SliceQuery
to that query's matches.
The caller is also responsible for truncating the entries
values
to honor BaseQuery.getLimit()
when BaseQuery.hasLimit()
is true. Passing in an entries
value longer than the limit set in
its respective key yields undefined behavior.
This method may be called by concurrent threads in a single process.
key
- entries
- metrics
- List<SliceQuery> getQueries()
SliceQuery
instances belonging to this ScanJob
.
Before calling
process(org.janusgraph.diskstorage.StaticBuffer, java.util.Map, ScanMetrics)
,
users of this interface must check that the key in question contains at least one
entry matching the initial SliceQuery
returned by this method. See the javadoc
for the process
method for more information.
If this method returns more than one query, then the initial query's lower bound must
be all zero bits and the initial query's upper bound must be all one bits (per the
preconditions in StandardScannerExecutor
, the reference ScanJob
executor).
default Predicate<StaticBuffer> getKeyFilter()
process(org.janusgraph.diskstorage.StaticBuffer, java.util.Map, ScanMetrics)
should be invoked for the given key. If the predicate returns true,
then users of this interface should invoke process
for the key and
its associated entries. If the predicate returns false, then users of this
interface need not invoke process
for the key and its associated entries.
This is essentially an optimization that lets implementations of this interface
signal to client code that a row can be safely skipped without affecting the
execution of this ScanJob
.
The returned predicate may be called by concurrent threads in a single process.
Copyright © 2012–2024. All rights reserved.