Class BatchAppenderatorDriver
- java.lang.Object
-
- org.apache.druid.segment.realtime.appenderator.BaseAppenderatorDriver
-
- org.apache.druid.segment.realtime.appenderator.BatchAppenderatorDriver
-
- All Implemented Interfaces:
Closeable,AutoCloseable
public class BatchAppenderatorDriver extends BaseAppenderatorDriver
This class is specifialized for batch ingestion. In batch ingestion, the segment lifecycle is like:APPENDING -> PUSHED_AND_DROPPED -> PUBLISHED
- APPENDING: Segment is available for appending.
- PUSHED_AND_DROPPED: Segment is pushed to deep storage and dropped from the local storage.
- PUBLISHED: Segment's metadata is published to metastore.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.druid.segment.realtime.appenderator.BaseAppenderatorDriver
BaseAppenderatorDriver.SegmentsForSequence
-
-
Field Summary
-
Fields inherited from class org.apache.druid.segment.realtime.appenderator.BaseAppenderatorDriver
appenderator, executor, segments
-
-
Constructor Summary
Constructors Constructor Description BatchAppenderatorDriver(Appenderator appenderator, SegmentAllocator segmentAllocator, UsedSegmentChecker usedSegmentChecker, org.apache.druid.segment.loading.DataSegmentKiller dataSegmentKiller)Create a driver.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AppenderatorDriverAddResultadd(org.apache.druid.data.input.InputRow row, String sequenceName)Add a row.com.google.common.util.concurrent.ListenableFuture<SegmentsAndCommitMetadata>publishAll(Set<org.apache.druid.timeline.DataSegment> segmentsToBeOverwritten, Set<org.apache.druid.timeline.DataSegment> tombstones, TransactionalSegmentPublisher publisher, Function<Set<org.apache.druid.timeline.DataSegment>,Set<org.apache.druid.timeline.DataSegment>> outputSegmentsAnnotateFunction)Publish all segments.SegmentsAndCommitMetadatapushAllAndClear(long pushAndClearTimeoutMs)Push and drop all segments in theSegmentWithState.SegmentState.APPENDINGstate.ObjectstartJob()ObjectstartJob(AppenderatorDriverSegmentLockHelper lockHelper)This method always returns null because batch ingestion doesn't support restoring tasks on failures.-
Methods inherited from class org.apache.druid.segment.realtime.appenderator.BaseAppenderatorDriver
append, clear, close, getSegments
-
-
-
-
Constructor Detail
-
BatchAppenderatorDriver
public BatchAppenderatorDriver(Appenderator appenderator, SegmentAllocator segmentAllocator, UsedSegmentChecker usedSegmentChecker, org.apache.druid.segment.loading.DataSegmentKiller dataSegmentKiller)
Create a driver.- Parameters:
appenderator- appenderatorsegmentAllocator- segment allocatorusedSegmentChecker- used segment checker
-
-
Method Detail
-
startJob
@Nullable public Object startJob(AppenderatorDriverSegmentLockHelper lockHelper)
This method always returns null because batch ingestion doesn't support restoring tasks on failures.- Specified by:
startJobin classBaseAppenderatorDriver- Returns:
- always null
-
add
public AppenderatorDriverAddResult add(org.apache.druid.data.input.InputRow row, String sequenceName) throws IOException
Add a row. Must not be called concurrently from multiple threads.- Parameters:
row- the row to addsequenceName- sequenceName for this row's segment- Returns:
AppenderatorDriverAddResult- Throws:
IOException- if there is an I/O error while allocating or writing to a segment
-
pushAllAndClear
public SegmentsAndCommitMetadata pushAllAndClear(long pushAndClearTimeoutMs) throws InterruptedException, ExecutionException, TimeoutException
Push and drop all segments in theSegmentWithState.SegmentState.APPENDINGstate.- Parameters:
pushAndClearTimeoutMs- timeout for pushing and dropping segments- Returns:
SegmentsAndCommitMetadatafor pushed and dropped segments- Throws:
InterruptedExceptionExecutionExceptionTimeoutException
-
publishAll
public com.google.common.util.concurrent.ListenableFuture<SegmentsAndCommitMetadata> publishAll(@Nullable Set<org.apache.druid.timeline.DataSegment> segmentsToBeOverwritten, @Nullable Set<org.apache.druid.timeline.DataSegment> tombstones, TransactionalSegmentPublisher publisher, Function<Set<org.apache.druid.timeline.DataSegment>,Set<org.apache.druid.timeline.DataSegment>> outputSegmentsAnnotateFunction)
Publish all segments.- Parameters:
segmentsToBeOverwritten- segments which can be overwritten by new segments published by the given publisherpublisher- segment publisher- Returns:
- a
ListenableFuturefor the publish task
-
-