hbase thrift2 TGet.columns无效

时间:2016-05-25 09:53:35

标签: c++ hbase thrift

我想检索获取列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;
  }
}

1 个答案:

答案 0 :(得分:0)

使用功能设定值, void __set_family(const std :: string&amp; val);

不要直接设置数据成员。 std :: string family;

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;

};