Serializable, HasDisplayDataprotected static class CloudBigtableIO.SourceWithKeys extends BoundedSource<Result>
BoundedSource for a Cloud Bigtable Table with a start/stop key range, along
with a potential filter via a Scan.BoundedSource.BoundedReader<T extends Object>Source.Reader<T extends Object>| Modifier and Type | Field | Description |
|---|---|---|
protected static long |
SIZED_BASED_MAX_SPLIT_COUNT |
|
protected static org.slf4j.Logger |
SOURCE_LOG |
| Modifier | Constructor | Description |
|---|---|---|
protected |
SourceWithKeys(CloudBigtableScanConfiguration configuration,
long estimatedSize) |
| Modifier and Type | Method | Description |
|---|---|---|
BoundedSource.BoundedReader<Result> |
createReader(PipelineOptions options) |
Creates a reader that will scan the entire table based on the
Scan in the
configuration. |
protected CloudBigtableScanConfiguration |
getConfiguration() |
|
long |
getEstimatedSize() |
|
long |
getEstimatedSizeBytes(PipelineOptions options) |
Gets an estimate of the size of the source.
|
Coder<Result> |
getOutputCoder() |
|
List<com.google.bigtable.repackaged.com.google.cloud.bigtable.data.v2.models.KeyOffset> |
getSampleRowKeys() |
Performs a call to get sample row keys from
CloudBigtableServiceImpl.getSampleRowKeys(CloudBigtableTableConfiguration)
if they are not yet cached. |
protected List<CloudBigtableIO.SourceWithKeys> |
getSplits(long desiredBundleSizeBytes) |
|
protected static boolean |
isWithinRange(byte[] scanStartKey,
byte[] scanEndKey,
byte[] startKey,
byte[] endKey) |
Checks if the range of the region is within the range of the scan.
|
void |
populateDisplayData(DisplayData.Builder builder) |
|
protected List<CloudBigtableIO.SourceWithKeys> |
split(long regionSize,
long desiredBundleSizeBytes,
byte[] startKey,
byte[] stopKey) |
Splits the region based on the start and stop key.
|
List<? extends BoundedSource<Result>> |
split(long desiredBundleSizeBytes,
PipelineOptions options) |
Splits the bundle based on the assumption that the data is distributed evenly between
startKey and stopKey.
|
String |
toString() |
|
void |
validate() |
Validates the existence of the table in the configuration.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetDefaultOutputCoderprotected static final org.slf4j.Logger SOURCE_LOG
protected static final long SIZED_BASED_MAX_SPLIT_COUNT
protected SourceWithKeys(CloudBigtableScanConfiguration configuration, long estimatedSize)
public long getEstimatedSizeBytes(PipelineOptions options)
NOTE: This value is a guesstimate. It could be significantly off, especially if there is
aScan selected in the configuration. It will also be off if the start and stop keys
are calculated via CloudBigtableIO.Source.split(long, PipelineOptions).
options - The pipeline options.public long getEstimatedSize()
public List<? extends BoundedSource<Result>> split(long desiredBundleSizeBytes, PipelineOptions options) throws Exception
This method is called internally by Beam. Do not call it directly.
split in class BoundedSource<Result>desiredBundleSizeBytes - The desired size for each bundle, in bytes.options - The pipeline options.Exceptionprotected List<CloudBigtableIO.SourceWithKeys> getSplits(long desiredBundleSizeBytes) throws Exception
Exceptionprotected static boolean isWithinRange(byte[] scanStartKey,
byte[] scanEndKey,
byte[] startKey,
byte[] endKey)
public List<com.google.bigtable.repackaged.com.google.cloud.bigtable.data.v2.models.KeyOffset> getSampleRowKeys() throws IOException
CloudBigtableServiceImpl.getSampleRowKeys(CloudBigtableTableConfiguration)
if they are not yet cached. The sample row keys give information about tablet key boundaries
and estimated sizes.IOExceptionpublic void validate()
protected List<CloudBigtableIO.SourceWithKeys> split(long regionSize, long desiredBundleSizeBytes, byte[] startKey, byte[] stopKey) throws IOException
Bytes.split(byte[], byte[], int) under the covers.IOExceptionpublic BoundedSource.BoundedReader<Result> createReader(PipelineOptions options)
Scan in the
configuration.createReader in class BoundedSource<Result>protected CloudBigtableScanConfiguration getConfiguration()
public void populateDisplayData(DisplayData.Builder builder)
populateDisplayData in interface HasDisplayDatapopulateDisplayData in class Source<Result>