Class BigtableDataSettings.Builder
- java.lang.Object
-
- com.google.cloud.bigtable.data.v2.BigtableDataSettings.Builder
-
- Enclosing class:
- BigtableDataSettings
public static class BigtableDataSettings.Builder extends Object
Builder for BigtableDataSettings.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description BigtableDataSettings
build()
BigtableDataSettings.Builder
disableBatchMutationLatencyBasedThrottling()
Disable latency based throttling forBigtableDataClient.newBulkMutationBatcher(String)
.BigtableDataSettings.Builder
enableBatchMutationLatencyBasedThrottling(long targetRpcLatencyMs)
Enable latency based throttling forBigtableDataClient.newBulkMutationBatcher(String)
with a target rpc latency.String
getAppProfileId()
Gets the app profile id that was previously set on this Builder.com.google.api.gax.core.CredentialsProvider
getCredentialsProvider()
Gets the CredentialsProvider to use for getting the credentials to make calls with.String
getInstanceId()
Gets the instance id that was previously set on this Builder.List<String>
getPrimingTableIds()
Deprecated.This field is ignored.String
getProjectId()
Gets the project id that was previously set on this Builder.Long
getTargetRpcLatencyMsForBatchMutation()
Gets target bulk mutation rpc latency if latency based throttling is enabled forBigtableDataClient.newBulkMutationBatcher(String)
.boolean
isBulkMutationFlowControlEnabled()
Gets if flow control is enabled forBigtableDataClient.newBulkMutationBatcher(String)
based on the load of the Bigtable server.boolean
isLatencyBasedThrottlingForBatchMutationEnabled()
Gets if latency based throttling is enabled forBigtableDataClient.newBulkMutationBatcher(String)
boolean
isRefreshingChannel()
Deprecated.Channel refreshing is enabled by default and this method will be deprecated.BigtableDataSettings.Builder
setAppProfileId(String appProfileId)
Sets the AppProfile to use.BigtableDataSettings.Builder
setBulkMutationFlowControl(boolean isEnableFlowControl)
Configure flow control forBigtableDataClient.newBulkMutationBatcher(String)
based on the current load on the Bigtable cluster.BigtableDataSettings.Builder
setCredentialsProvider(com.google.api.gax.core.CredentialsProvider credentialsProvider)
Sets the CredentialsProvider to use for getting the credentials to make calls with.BigtableDataSettings.Builder
setDefaultAppProfileId()
Resets the AppProfile id to the default for the instance.BigtableDataSettings.Builder
setInstanceId(String instanceId)
Sets the target instance.BigtableDataSettings.Builder
setPrimingTableIds(String... tableIds)
Deprecated.This field is ignored.BigtableDataSettings.Builder
setProjectId(String projectId)
Sets the target project.BigtableDataSettings.Builder
setRefreshingChannel(boolean isRefreshingChannel)
Deprecated.Channel refreshing is enabled by default and this method will be deprecated.EnhancedBigtableStubSettings.Builder
stubSettings()
Returns the underlying settings for making RPC calls.
-
-
-
Method Detail
-
setProjectId
public BigtableDataSettings.Builder setProjectId(@Nonnull String projectId)
Sets the target project. This setting is required. All RPCs will be made in the context of this setting.
-
getProjectId
public String getProjectId()
Gets the project id that was previously set on this Builder.
-
setInstanceId
public BigtableDataSettings.Builder setInstanceId(@Nonnull String instanceId)
Sets the target instance. This setting is required. All RPCs will be made in the context of this setting.
-
getInstanceId
public String getInstanceId()
Gets the instance id that was previously set on this Builder.
-
setAppProfileId
public BigtableDataSettings.Builder setAppProfileId(@Nonnull 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.
-
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.
-
getAppProfileId
public String getAppProfileId()
Gets the app profile id that was previously set on this Builder.
-
setCredentialsProvider
public BigtableDataSettings.Builder setCredentialsProvider(com.google.api.gax.core.CredentialsProvider credentialsProvider)
Sets the CredentialsProvider to use for getting the credentials to make calls with.
-
getCredentialsProvider
public com.google.api.gax.core.CredentialsProvider getCredentialsProvider()
Gets the CredentialsProvider to use for getting the credentials to make calls with.
-
setRefreshingChannel
@Deprecated public BigtableDataSettings.Builder setRefreshingChannel(boolean isRefreshingChannel)
Deprecated.Channel refreshing is enabled by default and this method will be deprecated.Configure periodic gRPC channel refreshes.This feature will gracefully refresh connections to the Cloud Bigtable service. This is a 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.
-
isRefreshingChannel
@Deprecated public boolean isRefreshingChannel()
Deprecated.Channel refreshing is enabled by default and this method will be deprecated.Gets if channels will gracefully refresh connections to Cloud Bigtable service.
-
setPrimingTableIds
@Deprecated public BigtableDataSettings.Builder setPrimingTableIds(String... tableIds)
Deprecated.This field is ignored. IfisRefreshingChannel()
is enabled, warm up requests will be sent to all table ids of the instance.
-
getPrimingTableIds
@Deprecated public List<String> getPrimingTableIds()
Deprecated.This field is ignored. IfisRefreshingChannel()
is enabled, warm up requests will be sent to all table ids of the instance.
-
enableBatchMutationLatencyBasedThrottling
@BetaApi("Latency based throttling is not currently stable and may change in the future") public BigtableDataSettings.Builder enableBatchMutationLatencyBasedThrottling(long targetRpcLatencyMs)
Enable latency based throttling forBigtableDataClient.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
allowsFlowController.getCurrentElementCountLimit()
in-flight elements with a total size ofFlowController.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% ofFlowController.getMaxElementCountLimit()
} else if (mean latency > 1.2 * target latency) { decrease element count limit by 10% ofFlowController.getMaxElementCountLimit()
} else if (there was throttling in the past 5 minutes && mean latency < 0.8 * target latency) { increase element count limit by 5% ofFlowController.getMaxElementCountLimit()
} else if (there was throttling in the past 5 minutes && parallelism is 5% ofFlowController.getMaxElementCountLimit()
&& mean latency < 2 * target latency) { increase element count limit by 2% ofFlowController.getMaxElementCountLimit()
Increases are capped byFlowController.getMaxElementCountLimit()
, Decreases are floored atFlowController.getMinElementCountLimit()
so that there is some level of throughput.
-
disableBatchMutationLatencyBasedThrottling
@BetaApi("Latency based throttling is not currently stable and may change in the future") public BigtableDataSettings.Builder disableBatchMutationLatencyBasedThrottling()
Disable latency based throttling forBigtableDataClient.newBulkMutationBatcher(String)
.
-
isLatencyBasedThrottlingForBatchMutationEnabled
@BetaApi("Latency based throttling is not currently stable and may change in the future") public boolean isLatencyBasedThrottlingForBatchMutationEnabled()
Gets if latency based throttling is enabled forBigtableDataClient.newBulkMutationBatcher(String)
-
getTargetRpcLatencyMsForBatchMutation
@BetaApi("Latency based throttling is not currently stable and may change in the future") @Nullable public Long getTargetRpcLatencyMsForBatchMutation()
Gets target bulk mutation rpc latency if latency based throttling is enabled forBigtableDataClient.newBulkMutationBatcher(String)
. Otherwise returns null.
-
setBulkMutationFlowControl
@InternalApi("Intended for use by the Bigtable dataflow connectors only") public BigtableDataSettings.Builder setBulkMutationFlowControl(boolean isEnableFlowControl)
Configure flow control forBigtableDataClient.newBulkMutationBatcher(String)
based on the current load on the Bigtable cluster.This is different from the
FlowController
that's always enabled on batch reads and batch writes, which limits the number of outstanding requests to the Bigtable server.
-
isBulkMutationFlowControlEnabled
@InternalApi("Intended for use by the Bigtable dataflow connectors only") public boolean isBulkMutationFlowControlEnabled()
Gets if flow control is enabled forBigtableDataClient.newBulkMutationBatcher(String)
based on the load of the Bigtable server.
-
stubSettings
public EnhancedBigtableStubSettings.Builder stubSettings()
Returns the underlying settings for making RPC calls. The settings should be changed with care.
-
build
public BigtableDataSettings build()
-
-