public abstract class BufferWritingResultPartition extends ResultPartition
ResultPartition which writes buffers directly to ResultSubpartitions. This is
in contrast to implementations where records are written to a joint structure, from which the
subpartitions draw the data after the write phase is finished, for example the sort-based
partitioning.
To avoid confusion: On the read side, all subpartitions return buffers (and backlog) to be transported through the network.
AvailabilityProvider.AvailabilityHelper| 限定符和类型 | 字段和说明 |
|---|---|
protected ResultSubpartition[] |
subpartitions
The subpartitions of this partition.
|
bufferCompressor, bufferPool, LOG, numBuffersOut, numBytesOut, numSubpartitions, partitionId, partitionManager, partitionTypeAVAILABLE| 构造器和说明 |
|---|
BufferWritingResultPartition(String owningTaskName,
int partitionIndex,
ResultPartitionID partitionId,
ResultPartitionType partitionType,
ResultSubpartition[] subpartitions,
int numTargetKeyGroups,
ResultPartitionManager partitionManager,
BufferCompressor bufferCompressor,
org.apache.flink.util.function.SupplierWithException<BufferPool,IOException> bufferPoolFactory) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
broadcastEvent(AbstractEvent event,
boolean isPriorityEvent)
Writes the given
AbstractEvent to all channels. |
void |
broadcastRecord(ByteBuffer record)
Writes the given serialized record to all subpartitions.
|
void |
close()
Closes the partition writer which releases the allocated resource, for example the buffer
pool.
|
ResultSubpartitionView |
createSubpartitionView(int subpartitionIndex,
BufferAvailabilityListener availabilityListener)
Returns a reader for the subpartition with the given index.
|
void |
emitRecord(ByteBuffer record,
int targetSubpartition)
Writes the given serialized record to the target subpartition.
|
void |
finish()
Finishes the result partition.
|
protected void |
flushAllSubpartitions(boolean finishProducers) |
protected void |
flushSubpartition(int targetSubpartition,
boolean finishProducers) |
ResultSubpartition[] |
getAllPartitions() |
TimerGauge |
getBackPressuredTimeMsPerSecond() |
int |
getNumberOfQueuedBuffers()
Returns the total number of queued buffers of all subpartitions.
|
int |
getNumberOfQueuedBuffers(int targetSubpartition)
Returns the number of queued buffers of the given target subpartition.
|
protected void |
releaseInternal()
Releases all produced data including both those stored in memory and persisted on disk.
|
void |
setMetricGroup(TaskIOMetricGroup metrics)
Sets the metric group for the
ResultPartitionWriter. |
void |
setup()
Registers a buffer pool with this result partition.
|
canBeCompressed, checkInProduceState, fail, getAllDataProcessedFuture, getAvailableFuture, getBufferPool, getFailureCause, getNumberOfSubpartitions, getNumTargetKeyGroups, getOwningTaskName, getPartitionId, getPartitionIndex, getPartitionManager, getPartitionType, isFinished, isReleased, notifyEndOfData, onSubpartitionAllDataProcessed, release, release, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitflush, flushAlland, isApproximatelyAvailable, isAvailable, orprotected final ResultSubpartition[] subpartitions
public BufferWritingResultPartition(String owningTaskName, int partitionIndex, ResultPartitionID partitionId, ResultPartitionType partitionType, ResultSubpartition[] subpartitions, int numTargetKeyGroups, ResultPartitionManager partitionManager, @Nullable BufferCompressor bufferCompressor, org.apache.flink.util.function.SupplierWithException<BufferPool,IOException> bufferPoolFactory)
public void setup()
throws IOException
ResultPartitionThere is one pool for each result partition, which is shared by all its sub partitions.
The pool is registered with the partition *after* it as been constructed in order to
conform to the life-cycle of task registrations in the TaskExecutor.
setup 在接口中 ResultPartitionWritersetup 在类中 ResultPartitionIOExceptionpublic int getNumberOfQueuedBuffers()
ResultPartitiongetNumberOfQueuedBuffers 在类中 ResultPartitionpublic int getNumberOfQueuedBuffers(int targetSubpartition)
ResultPartitiongetNumberOfQueuedBuffers 在类中 ResultPartitionprotected void flushSubpartition(int targetSubpartition,
boolean finishProducers)
protected void flushAllSubpartitions(boolean finishProducers)
public void emitRecord(ByteBuffer record, int targetSubpartition) throws IOException
ResultPartitionWriterIOExceptionpublic void broadcastRecord(ByteBuffer record) throws IOException
ResultPartitionWriterIOExceptionpublic void broadcastEvent(AbstractEvent event, boolean isPriorityEvent) throws IOException
ResultPartitionWriterAbstractEvent to all channels.IOExceptionpublic void setMetricGroup(TaskIOMetricGroup metrics)
ResultPartitionWriterResultPartitionWriter.setMetricGroup 在接口中 ResultPartitionWritersetMetricGroup 在类中 ResultPartitionpublic ResultSubpartitionView createSubpartitionView(int subpartitionIndex, BufferAvailabilityListener availabilityListener) throws IOException
ResultPartitionWriterIOExceptionpublic void finish()
throws IOException
ResultPartitionAfter this operation, it is not possible to add further data to the result partition.
For BLOCKING results, this will trigger the deployment of consuming tasks.
finish 在接口中 ResultPartitionWriterfinish 在类中 ResultPartitionIOExceptionprotected void releaseInternal()
ResultPartitionreleaseInternal 在类中 ResultPartitionpublic void close()
ResultPartitionWriterclose 在接口中 AutoCloseableclose 在接口中 ResultPartitionWriterclose 在类中 ResultPartition@VisibleForTesting public TimerGauge getBackPressuredTimeMsPerSecond()
@VisibleForTesting public ResultSubpartition[] getAllPartitions()
Copyright © 2014–2022 The Apache Software Foundation. All rights reserved.