Class BigtableDataSettings.Builder (2.3.1)

public static class BigtableDataSettings.Builder

Builder for BigtableDataSettings.

Inheritance

java.lang.Object > BigtableDataSettings.Builder

Methods

build()

public BigtableDataSettings build()
Returns
TypeDescription
BigtableDataSettings

disableBatchMutationLatencyBasedThrottling()

public BigtableDataSettings.Builder disableBatchMutationLatencyBasedThrottling()

Disable latency based throttling for BigtableDataClient#newBulkMutationBatcher(String).

Returns
TypeDescription
BigtableDataSettings.Builder

enableBatchMutationLatencyBasedThrottling(long targetRpcLatencyMs)

public BigtableDataSettings.Builder enableBatchMutationLatencyBasedThrottling(long targetRpcLatencyMs)

Enable latency based throttling for BigtableDataClient#newBulkMutationBatcher(String) with a target rpc latency. The number of allowed in-flight requests will be adjusted to reach the target bulk mutations rpc latency.

The logic of adjusting in-flight request limits is as follows:

 To start, Batcher allows FlowController#getCurrentElementCountLimit()
 in-flight elements with a total size of FlowController#getCurrentRequestBytesLimit().

 Every 20 seconds, Batcher checks the mean rpc latency of the requests and compare
 it with the target rpc latency:
   if (mean latency > 3 * target latency) {
     decrease element count limit by 30% of FlowController#getMaxElementCountLimit()
   } else if (mean latency > 1.2 * target latency) {
     decrease element count limit by 10% of FlowController#getMaxElementCountLimit()
   } else if (there was throttling in the past 5 minutes
        && mean latency < 0.8 * target latency) {
     increase element count limit by 5% of FlowController#getMaxElementCountLimit()
   } else if (there was throttling in the past 5 minutes
        && parallelism is 5% of FlowController#getMaxElementCountLimit()
        && mean latency < 2 * target latency) {
     increase element count limit by 2% of FlowController#getMaxElementCountLimit()

 Increases are capped by FlowController#getMaxElementCountLimit(), Decreases are floored at FlowController#getMinElementCountLimit() so that there is some level of throughput.
 
Parameter
NameDescription
targetRpcLatencyMslong
Returns
TypeDescription
BigtableDataSettings.Builder

getAppProfileId()

public String getAppProfileId()

Gets the app profile id that was previously set on this Builder.

Returns
TypeDescription
String

getCredentialsProvider()

public CredentialsProvider getCredentialsProvider()

Gets the CredentialsProvider to use for getting the credentials to make calls with.

Returns
TypeDescription
CredentialsProvider

getInstanceId()

public String getInstanceId()

Gets the instance id that was previously set on this Builder.

Returns
TypeDescription
String

getPrimingTableIds()

public List<String> getPrimingTableIds()

Gets the table ids that will be used to send warmup requests when #setRefreshingChannel(boolean) is enabled.

Returns
TypeDescription
List<String>

getProjectId()

public String getProjectId()

Gets the project id that was previously set on this Builder.

Returns
TypeDescription
String

getTargetRpcLatencyMsForBatchMutation()

public Long getTargetRpcLatencyMsForBatchMutation()

Gets target bulk mutation rpc latency if latency based throttling is enabled for BigtableDataClient#newBulkMutationBatcher(String). Otherwise returns null.

Returns
TypeDescription
Long

isLatencyBasedThrottlingForBatchMutationEnabled()

public boolean isLatencyBasedThrottlingForBatchMutationEnabled()

Gets if latency based throttling is enabled for BigtableDataClient#newBulkMutationBatcher(String)

Returns
TypeDescription
boolean

isRefreshingChannel()

public boolean isRefreshingChannel()

Gets if channels will gracefully refresh connections to Cloud Bigtable service

Returns
TypeDescription
boolean

setAppProfileId(String appProfileId)

public BigtableDataSettings.Builder setAppProfileId(String appProfileId)

Sets the AppProfile to use.

An application profile (sometimes also shortened to "app profile") is a group of configuration parameters for an individual use case. A client will identify itself with an application profile ID at connection time, and the requests will be handled according to that application profile.

Parameter
NameDescription
appProfileIdString
Returns
TypeDescription
BigtableDataSettings.Builder

setCredentialsProvider(CredentialsProvider credentialsProvider)

public BigtableDataSettings.Builder setCredentialsProvider(CredentialsProvider credentialsProvider)

Sets the CredentialsProvider to use for getting the credentials to make calls with.

Parameter
NameDescription
credentialsProviderCredentialsProvider
Returns
TypeDescription
BigtableDataSettings.Builder

setDefaultAppProfileId()

public BigtableDataSettings.Builder setDefaultAppProfileId()

Resets the AppProfile id to the default for the instance.

An application profile (sometimes also shortened to "app profile") is a group of configuration parameters for an individual use case. A client will identify itself with an application profile ID at connection time, and the requests will be handled according to that application profile.

Every Bigtable Instance has a default application profile associated with it, this method configures the client to use it.

Returns
TypeDescription
BigtableDataSettings.Builder

setInstanceId(String instanceId)

public BigtableDataSettings.Builder setInstanceId(String instanceId)

Sets the target instance. This setting is required. All RPCs will be made in the context of this setting.

Parameter
NameDescription
instanceIdString
Returns
TypeDescription
BigtableDataSettings.Builder

setPrimingTableIds(String[] tableIds)

public BigtableDataSettings.Builder setPrimingTableIds(String[] tableIds)

Configure the tables that can be used to prime a channel during a refresh.

These tables work in conjunction with #setRefreshingChannel(boolean). When a channel is refreshed, it will send a request to each table to warm up the serverside caches before admitting the new channel into the channel pool.

Parameter
NameDescription
tableIdsString[]
Returns
TypeDescription
BigtableDataSettings.Builder

setProjectId(String projectId)

public BigtableDataSettings.Builder setProjectId(String projectId)

Sets the target project. This setting is required. All RPCs will be made in the context of this setting.

Parameter
NameDescription
projectIdString
Returns
TypeDescription
BigtableDataSettings.Builder

setRefreshingChannel(boolean isRefreshingChannel)

public BigtableDataSettings.Builder setRefreshingChannel(boolean isRefreshingChannel)

Configure periodic gRPC channel refreshes.

This feature will gracefully refresh connections to the Cloud Bigtable service. This is an experimental feature to address tail latency caused by the service dropping long lived gRPC connections, which causes the client to renegotiate the gRPC connection in the request path, which causes periodic spikes in latency

Parameter
NameDescription
isRefreshingChannelboolean
Returns
TypeDescription
BigtableDataSettings.Builder

stubSettings()

public EnhancedBigtableStubSettings.Builder stubSettings()

Returns the underlying settings for making RPC calls. The settings should be changed with care.

Returns
TypeDescription
EnhancedBigtableStubSettings.Builder