我确定在下面的代码段中忽略了某些内容,但我不知道是什么。如前所述,如果我调用“exists”以快速检查表中是否存在键,则后续的“get”最终不会返回任何内容;然而,注释掉“存在”调用会使代码工作。但是,现在我必须在解析从 Hbase 获取的结果之前进行额外的检查,以确保它不为空/null。
...
final Get g = new Get(someKey);
g.setCacheBlocks(true);
g.setMaxVersions(1);
g.addColumn(colFamily, colName);
/* --- THIS DOES NOT WORK --- */
if (this.someHbaseTab.exists(g)) {
final Result res = this.someHbaseTab.get(g);
// res is empty!!!
}
// --- --- ---
/* --- THIS WORKS --- */
// No call to 'exists'
final Result res = this.someHbaseTab.get(g);
// Valid result
// --- --- ---
...
我正在运行 Cloudera CDH5。
最佳答案
您不必调用存在。只需检查 res.isEmpty()
在 get()
之后称呼
关于hadoop - 检查 Hbase 表中是否存在键会影响后续的 get 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341938/