2016-05-25 2 views
0

Я хочу, чтобы получить получить колонку family1: qualifier1, но я получаю все столбцы в строке «123»HBase thrift2 TGet.columns не работает

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; 
    } 
} 

ответ

0

Используйте функцию, чтобы установить значение, недействительным __set_family (Const станд :: string & 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; 

}; 
Смежные вопросы