public final class MultiInputSortingDataInput<IN,K> extends Object implements StreamTaskInput<IN>
MultiInputSortingDataInput have
finished sorting as well.
Moreover it will report it is available or
approximately available if it has some records pending only if the head
of the CommonContext#getQueueOfHeads() belongs to the input. That way there is only ever one input
that reports it is available.
The sorter uses binary comparison of keys, which are extracted and serialized when received
from the chained input. Moreover the timestamps of incoming records are used for secondary ordering.
For the comparison it uses either FixedLengthByteKeyComparator if the length of the
serialized key is constant, or VariableLengthByteKeyComparator otherwise.
Watermarks, stream statuses, nor latency markers are propagated downstream as they do not make sense with buffered records. The input emits the largest watermark seen after all records.
| Modifier and Type | Class and Description |
|---|---|
static class |
MultiInputSortingDataInput.SelectableSortingInputs
A wrapper that combines sorting
inputs with a InputSelectable that should be
used to choose which input to consume next from. |
PushingAsyncDataInput.DataOutput<T>UNSPECIFIED| Modifier and Type | Method and Description |
|---|---|
void |
close() |
org.apache.flink.core.io.InputStatus |
emitNext(PushingAsyncDataInput.DataOutput<IN> output)
Pushes the next element to the output from current data input, and returns
the input status to indicate whether there are more available data in
current input.
|
CompletableFuture<?> |
getAvailableFuture() |
int |
getInputIndex()
Returns the input index of this input.
|
CompletableFuture<Void> |
prepareSnapshot(org.apache.flink.runtime.checkpoint.channel.ChannelStateWriter channelStateWriter,
long checkpointId)
Prepares to spill the in-flight input buffers as checkpoint snapshot.
|
static <K> MultiInputSortingDataInput.SelectableSortingInputs |
wrapInputs(org.apache.flink.runtime.jobgraph.tasks.AbstractInvokable containingTask,
StreamTaskInput<Object>[] inputs,
org.apache.flink.api.java.functions.KeySelector<Object,K>[] keySelectors,
org.apache.flink.api.common.typeutils.TypeSerializer<Object>[] inputSerializers,
org.apache.flink.api.common.typeutils.TypeSerializer<K> keySerializer,
org.apache.flink.runtime.memory.MemoryManager memoryManager,
org.apache.flink.runtime.io.disk.iomanager.IOManager ioManager,
boolean objectReuse,
double managedMemoryFraction,
org.apache.flink.configuration.Configuration jobConfiguration) |
public static <K> MultiInputSortingDataInput.SelectableSortingInputs wrapInputs(org.apache.flink.runtime.jobgraph.tasks.AbstractInvokable containingTask, StreamTaskInput<Object>[] inputs, org.apache.flink.api.java.functions.KeySelector<Object,K>[] keySelectors, org.apache.flink.api.common.typeutils.TypeSerializer<Object>[] inputSerializers, org.apache.flink.api.common.typeutils.TypeSerializer<K> keySerializer, org.apache.flink.runtime.memory.MemoryManager memoryManager, org.apache.flink.runtime.io.disk.iomanager.IOManager ioManager, boolean objectReuse, double managedMemoryFraction, org.apache.flink.configuration.Configuration jobConfiguration)
public int getInputIndex()
StreamTaskInputgetInputIndex in interface StreamTaskInput<IN>public CompletableFuture<Void> prepareSnapshot(org.apache.flink.runtime.checkpoint.channel.ChannelStateWriter channelStateWriter, long checkpointId)
StreamTaskInputprepareSnapshot in interface StreamTaskInput<IN>public void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableIOExceptionpublic org.apache.flink.core.io.InputStatus emitNext(PushingAsyncDataInput.DataOutput<IN> output) throws Exception
PushingAsyncDataInputThis method should be non blocking.
emitNext in interface PushingAsyncDataInput<IN>Exceptionpublic CompletableFuture<?> getAvailableFuture()
getAvailableFuture in interface org.apache.flink.runtime.io.AvailabilityProviderCopyright © 2014–2020 The Apache Software Foundation. All rights reserved.