这个示例代码使用 Thrift 传输对象、二进制协议和 hbase Thrift 2 客户端来连接 HBase Thrift 2 服务,并执行一个简单的 GET 操作,然后关闭连接。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <Protocol/TBinaryProtocol.h>
#include <transport/TSocket.h>
#include <transport/TTransportUtils.h>
#include <Hbase.h>
using namespace apache::hadoop::hbase::thrift2;
int main(int argc, char *argv[]) {
// 连接信息
std::string host = "127.0.0.1";
int port = 9090;
// 创建一个 Thrift 传输对象
boost::shared_ptr<apache::thrift::transport::TSocket> socket(new apache::thrift::transport::TSocket(host, port));
boost::shared_ptr<apache::thrift::transport::TTransport> transport(new apache::thrift::transport::TFramedTransport(socket));
boost::shared_ptr<apache::thrift::protocol::TProtocol> protocol(new apache::thrift::protocol::TBinaryProtocol(transport));
// 创建 HBase Thrift 2 客户端
HbaseClient client(protocol);
try {
// 打开连接
transport->open();
// 使用 HBase Thrift 2 客户端执行操作
std::vector<TColumn> columns;
std::map<std::string, std::string> attributes;
TGet get;
get.__set_row("test");
get.__set_columns(columns);
get.__set_attributes(attributes);
TResult result;
client.get(result, "testTable", get);
printf("Result: %s\n", result.row.c_str());
// 关闭连接
transport->close();
} catch (const TException &tx) {
fprintf(stderr, "ERROR: %s\n", tx.what());
exit(1);
}
return 0;
}
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved