hbase thrift2 TGet.columns不起作用

hbase thrift2 TGet.columns not working

本文关键字:不起作用 columns TGet thrift2 hbase      更新时间:2023-10-16

我想检索 get 列 family1:qualifier1,但我得到行 '123' 中的所有列

TGet get;
TColumn tcolumn;
tcolumn.family="family1";
tcolumn.qualifier="qualifier1"; //i want get column family1:qualifier1
get.row = "123";
get.columns.push_back(tcolumn);
TResult result;
std::cout<<"family:" << get.columns[0].family  << " qualifier:" << get.columns[0].qualifier <<" get.columns size:" << get.columns.size() << std::endl;
transport->open();
client.get(result, "mytable", get);
transport->close();
int columnSize = result.columnValues.size(); // but i got all columns in th row
if (columnSize > 0) {
  for(int i = 0;i < columnSize ; ++i){
    std::string columnName = result.columnValues[i].qualifier;
    std::string columnValue = result.columnValues[i].value;
    std::cout << "columnName: " << columnName << std::endl;
    std::cout << "columnValue: " << columnValue << std::endl;
  }
}

使用函数设置值,void __set_family(const std::string& val);

不要直接设置数据成员。标准::字符串家族;

class TColumn {
 public:
  static const char* ascii_fingerprint; // = "354B89A42CE318BBBCE588A386D5D6CD";
  static const uint8_t binary_fingerprint[16]; // = {0x35,0x4B,0x89,0xA4,0x2C,0xE3,0x18,0xBB,0xBC,0xE5,0x88,0xA3,0x86,0xD5,0xD6,0xCD};
  TColumn() : family(), qualifier(), timestamp(0) {
  }
  virtual ~TColumn() throw() {}
  std::string family;
  std::string qualifier;
  int64_t timestamp;
  _TColumn__isset __isset;
  void __set_family(const std::string& val) {
    family = val;
  }
  void __set_qualifier(const std::string& val) {
    qualifier = val;
    __isset.qualifier = true;
  }
  void __set_timestamp(const int64_t val) {
    timestamp = val;
    __isset.timestamp = true;
  }
  bool operator == (const TColumn & rhs) const
  {
    if (!(family == rhs.family))
      return false;
    if (__isset.qualifier != rhs.__isset.qualifier)
      return false;
    else if (__isset.qualifier && !(qualifier == rhs.qualifier))
      return false;
    if (__isset.timestamp != rhs.__isset.timestamp)
      return false;
    else if (__isset.timestamp && !(timestamp == rhs.timestamp))
      return false;
    return true;
  }
  bool operator != (const TColumn &rhs) const {
    return !(*this == rhs);
  }
  bool operator < (const TColumn & ) const;
  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
};