Мне нужно получить строки со столбцом NULL (не существует) в Hbase, используя Thrift c ++. Некоторые строки имеют этот столбец, некоторые нет.
У меня есть следующий код с фильтром, который отлично работает, но как я могу получить строки с несуществующим столбцом?
/* Connection to the thrift server */
boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
/* Creating the Hbase client*/
HbaseClient client(protocol);
try
{
/* Open the client transport*/
transport->open();
/* The table name */
std::string t("sometable");
/* Open the scanner: need to scan with a filter*/
StrVec columnNames;
StrMap atr_test;
TScan tscan;
std::string filterStr;
filterStr = "SingleColumnValueFilter('ColumnFamily', 'ColumnQualifier', =, 'substring:value', true, false)";
tscan.__set_filterString(filterStr);
int scanner = client.scannerOpenWithScan(t, tscan, atr_test);
while (true) {
std::vector<TRowResult> value;
client.scannerGet(value, scanner);
// Print value
for (CellMap::const_iterator it = value[0].columns.begin(); it != value[0].columns.end(); ++it) {
std::cout << " " << it->first << " => " << it->second.value << ";\n";
}
}
}
Я читал о setFilterIfMissing здесь — Как отфильтровать строки с данным столбцом (не ноль)?, но как я могу реализовать это в моем коде?
Или, может быть, есть другое решение?
Задача ещё не решена.