public interface Appenderator extends QuerySegmentWalker, Closeable
Any time you call one of the methods that adds, persists, or pushes data, you must provide a Committer, or a Supplier of one, that represents all data you have given to the Appenderator so far. The Committer will be used when that data has been persisted to disk.
Modifier and Type | Method and Description |
---|---|
int |
add(SegmentIdentifier identifier,
InputRow row,
com.google.common.base.Supplier<Committer> committerSupplier)
Add a row.
|
void |
clear()
Drop all in-memory and on-disk data, and forget any previously-remembered commit metadata.
|
void |
close()
Stop any currently-running processing and clean up after ourselves.
|
com.google.common.util.concurrent.ListenableFuture<?> |
drop(SegmentIdentifier identifier)
Drop all data associated with a particular pending segment.
|
String |
getDataSource()
Return the name of the dataSource associated with this Appenderator.
|
int |
getRowCount(SegmentIdentifier identifier)
Returns the number of rows in a particular pending segment.
|
List<SegmentIdentifier> |
getSegments()
Returns a list of all currently active segments.
|
com.google.common.util.concurrent.ListenableFuture<Object> |
persistAll(Committer committer)
Persist any in-memory indexed data to durable storage.
|
com.google.common.util.concurrent.ListenableFuture<SegmentsAndMetadata> |
push(List<SegmentIdentifier> identifiers,
Committer committer)
Merge and push particular segments to deep storage.
|
Object |
startJob()
Perform any initial setup.
|
getQueryRunnerForIntervals, getQueryRunnerForSegments
String getDataSource()
Object startJob()
int add(SegmentIdentifier identifier, InputRow row, com.google.common.base.Supplier<Committer> committerSupplier) throws IndexSizeExceededException, SegmentNotWritableException
If no pending segment exists for the provided identifier, a new one will be created.
This method may trigger a persistAll(Committer)
using the supplied Committer. If it does this, the
Committer is guaranteed to be *created* synchronously with the call to add, but will actually be used
asynchronously.
The add, clear, persistAll, and push methods should all be called from the same thread.
identifier
- the segment into which this row should be addedrow
- the row to addcommitterSupplier
- supplier of a committer associated with all data that has been added, including this rowIndexSizeExceededException
- if this row cannot be added because it is too largeSegmentNotWritableException
- if the requested segment is known, but has been closedList<SegmentIdentifier> getSegments()
int getRowCount(SegmentIdentifier identifier)
identifier
- segment to examineIllegalStateException
- if the segment is unknownvoid clear() throws InterruptedException
InterruptedException
com.google.common.util.concurrent.ListenableFuture<?> drop(SegmentIdentifier identifier)
clear()
), any on-disk commit
metadata will remain unchanged. If there is no pending segment with this identifier, then this method will
do nothing.
You should not write to the dropped segment after calling "drop". If you need to drop all your data and
re-write it, consider clear()
instead.
identifier
- the pending segment to dropcom.google.common.util.concurrent.ListenableFuture<Object> persistAll(Committer committer)
The add, clear, persistAll, and push methods should all be called from the same thread.
committer
- a committer associated with all data that has been added so farcom.google.common.util.concurrent.ListenableFuture<SegmentsAndMetadata> push(List<SegmentIdentifier> identifiers, Committer committer)
persistAll(Committer)
using the provided Committer.
After this method is called, you cannot add new data to any segments that were previously under construction.
The add, clear, persistAll, and push methods should all be called from the same thread.
identifiers
- list of segments to pushcommitter
- a committer associated with all data that has been added so farvoid close()
close
in interface AutoCloseable
close
in interface Closeable
Copyright © 2011–2017. All rights reserved.