public class FrameSplitter extends H2O.H2OCountedCompleter<FrameSplitter>
The task creates ratios.length+1
output frame each containing a
demanded fraction of rows from source dataset
The tasks internally extract data from source chunks and create output chunks in preserving order of parts. I.e., the 1st partition contains the first P1-rows, the 2nd partition contains following P2-rows, ...
Assumptions and invariants
NOTE: the implementation is data-transfer expensive and in some cases it would be beneficial to use original implementation from 9af3f4e.
.Constructor and Description |
---|
FrameSplitter(Frame dataset,
double[] ratios,
Key<Frame>[] destKeys,
Key<Job> jobKey) |
FrameSplitter(H2O.H2OCountedCompleter cc,
Frame dataset,
double[] ratios,
Key<Frame>[] destKeys,
Key<Job> jobKey) |
Modifier and Type | Method and Description |
---|---|
void |
compute2()
Override compute3() with actual work without having to worry about tryComplete()
|
Frame[] |
getResult()
Blocking call to obtain a result of computation.
|
void |
onCompletion(CountedCompleter caller)
Performs an action when method
CountedCompleter.tryComplete() is invoked
and there are no pending counts, or when the unconditional
method CountedCompleter.complete(java.lang.Void) is invoked. |
boolean |
onExceptionalCompletion(java.lang.Throwable ex,
CountedCompleter caller)
Performs an action when method
ForkJoinTask.completeExceptionally(java.lang.Throwable)
is invoked or method CountedCompleter.compute() throws an exception, and
this task has not otherwise already completed normally. |
asBytes, clone, compute, compute1, currThrPriority, frozenType, icer, priority, read, readJSON, reloadFromBytes, write, writeJSON
__tryComplete, addToPendingCount, compareAndSetPendingCount, complete, exec, getCompleter, getPendingCount, getRawResult, setCompleter, setPendingCount, setRawResult, tryComplete
adapt, adapt, adapt, cancel, compareAndSetForkJoinTaskTag, completeExceptionally, fork, get, get, getException, getForkJoinTaskTag, getPool, getQueuedTaskCount, getSurplusQueuedTaskCount, helpQuiesce, inForkJoinPool, invoke, invokeAll, invokeAll, invokeAll, isCancelled, isCompletedAbnormally, isCompletedNormally, isDone, join, peekNextLocalTask, pollNextLocalTask, pollTask, quietlyComplete, quietlyInvoke, quietlyJoin, reinitialize, setForkJoinTaskTag, tryUnfork
public FrameSplitter(Frame dataset, double[] ratios, Key<Frame>[] destKeys, Key<Job> jobKey)
public void compute2()
H2O.H2OCountedCompleter
compute2
in class H2O.H2OCountedCompleter<FrameSplitter>
public Frame[] getResult()
public void onCompletion(CountedCompleter caller)
CountedCompleter
CountedCompleter.tryComplete()
is invoked
and there are no pending counts, or when the unconditional
method CountedCompleter.complete(java.lang.Void)
is invoked. By default, this method
does nothing.onCompletion
in class CountedCompleter
caller
- the task invoking this method (which may
be this task itself).public boolean onExceptionalCompletion(java.lang.Throwable ex, CountedCompleter caller)
CountedCompleter
ForkJoinTask.completeExceptionally(java.lang.Throwable)
is invoked or method CountedCompleter.compute()
throws an exception, and
this task has not otherwise already completed normally. On
entry to this method, this task ForkJoinTask.isCompletedAbnormally()
. The return value of this
method controls further propagation: If true
and this
task has a completer, then this completer is also completed
exceptionally. The default implementation of this method does
nothing except return true
.onExceptionalCompletion
in class CountedCompleter
ex
- the exceptioncaller
- the task invoking this method (which may
be this task itself).