Kudu C++ client API
|
A handle for a connection to a cluster. More...
#include <client.h>
Public Types | |
enum | ReplicaSelection { LEADER_ONLY, CLOSEST_REPLICA, FIRST_REPLICA } |
Policy with which to choose amongst multiple replicas. More... | |
Public Member Functions | |
KuduTableCreator * | NewTableCreator () |
Status | IsCreateTableInProgress (const std::string &table_name, bool *create_in_progress) |
Status | DeleteTable (const std::string &table_name) |
KuduTableAlterer * | NewTableAlterer (const std::string &table_name) |
Status | IsAlterTableInProgress (const std::string &table_name, bool *alter_in_progress) |
Status | GetTableSchema (const std::string &table_name, KuduSchema *schema) |
Status | ListTabletServers (std::vector< KuduTabletServer * > *tablet_servers) |
Status | ListTables (std::vector< std::string > *tables, const std::string &filter="") |
Status | TableExists (const std::string &table_name, bool *exists) |
Status | OpenTable (const std::string &table_name, sp::shared_ptr< KuduTable > *table) |
sp::shared_ptr< KuduSession > | NewSession () |
bool | IsMultiMaster () const |
const MonoDelta & | default_admin_operation_timeout () const |
const MonoDelta & | default_rpc_timeout () const |
uint64_t | GetLatestObservedTimestamp () const |
void | SetLatestObservedTimestamp (uint64_t ht_timestamp) |
Static Public Attributes | |
static const uint64_t | kNoTimestamp |
A handle for a connection to a cluster.
The KuduClient class represents a connection to a cluster. From the user perspective, they should only need to create one of these in their application, likely a singleton – but it is not a singleton in Kudu in any way. Different KuduClient objects do not interact with each other – no connection pooling, etc. With the exception of common properties managed by free (non-member) functions in the kudu::client namespace, each KuduClient object is sandboxed with no global cross-client state.
In the implementation, the client holds various pieces of common infrastructure which is not table-specific:
In order to actually write data to the cluster, callers must first create a KuduSession object using NewSession(). A KuduClient may have several associated sessions.
const MonoDelta& kudu::client::KuduClient::default_admin_operation_timeout | ( | ) | const |
const MonoDelta& kudu::client::KuduClient::default_rpc_timeout | ( | ) | const |
Status kudu::client::KuduClient::DeleteTable | ( | const std::string & | table_name | ) |
Delete/drop a table.
[in] | table_name | Name of the table to drop. |
uint64_t kudu::client::KuduClient::GetLatestObservedTimestamp | ( | ) | const |
Get the highest HybridTime timestamp observed by the client.
The latest observed timestamp can be used to start a snapshot scan on a table which is guaranteed to contain all data written or previously read by this client. See KuduScanner for more details on timestamps.
Status kudu::client::KuduClient::GetTableSchema | ( | const std::string & | table_name, |
KuduSchema * | schema | ||
) |
Get table's schema.
[in] | table_name | Name of the table. |
[out] | schema | Raw pointer to the schema object; caller gets ownership. |
Status kudu::client::KuduClient::IsAlterTableInProgress | ( | const std::string & | table_name, |
bool * | alter_in_progress | ||
) |
Check if table alteration is in-progress.
[in] | table_name | Name of the table. |
[out] | alter_in_progress | The value is set only in case of success; it is true iff the operation is in progress. |
Status kudu::client::KuduClient::IsCreateTableInProgress | ( | const std::string & | table_name, |
bool * | create_in_progress | ||
) |
Check whether a create table operation is in-progress.
[in] | table_name | Name of the table. |
[out] | create_in_progress | The value is set only in case of success; it is true iff the operation is in progress. |
bool kudu::client::KuduClient::IsMultiMaster | ( | ) | const |
true
iff client is configured to talk to multiple Kudu master servers. Status kudu::client::KuduClient::ListTables | ( | std::vector< std::string > * | tables, |
const std::string & | filter = "" |
||
) |
List only those tables whose names pass a substring match on filter
.
[out] | tables | The placeholder for the result. Appended only on success. |
[in] | filter | Substring filter to use; empty sub-string filter matches all tables. |
Status kudu::client::KuduClient::ListTabletServers | ( | std::vector< KuduTabletServer * > * | tablet_servers | ) |
Get information on current tablet servers.
[out] | tablet_servers | The placeholder for the result. The caller takes ownership of the container's elements. |
sp::shared_ptr<KuduSession> kudu::client::KuduClient::NewSession | ( | ) |
Create a new session for interacting with the cluster.
This is a fully local operation (no RPCs or blocking).
KuduTableAlterer* kudu::client::KuduClient::NewTableAlterer | ( | const std::string & | table_name | ) |
Create a KuduTableAlterer object.
[in] | table_name | Name of the table to alter. |
KuduTableCreator* kudu::client::KuduClient::NewTableCreator | ( | ) |
Create a KuduTableCreator object.
Status kudu::client::KuduClient::OpenTable | ( | const std::string & | table_name, |
sp::shared_ptr< KuduTable > * | table | ||
) |
Open table with the given name.
This method does an RPC to ensure that the table exists and looks up its schema.
[in] | table_name | Name of the table. |
[out] | table | The result table. |
Should we offer an async version of this as well?
Probably should have a configurable timeout in KuduClientBuilder?
void kudu::client::KuduClient::SetLatestObservedTimestamp | ( | uint64_t | ht_timestamp | ) |
Sets the latest observed HybridTime timestamp.
This is only useful when forwarding timestamps between clients to enforce external consistency when using KuduSession::CLIENT_PROPAGATED external consistency mode.
The HybridTime encoded timestamp should be obtained from another client's KuduClient::GetLatestObservedTimestamp() method.
[in] | ht_timestamp | Timestamp encoded in HybridTime format. |
Status kudu::client::KuduClient::TableExists | ( | const std::string & | table_name, |
bool * | exists | ||
) |
Check if the table given by 'table_name' exists.
[in] | table_name | Name of the table. |
[out] | exists | Set only on success; set to true iff table exists. |
|
static |
Value for the latest observed timestamp when none has been observed or set.