Hadoop 检查Hbase表中是否存在键会影响后续get调用

Hadoop 检查Hbase表中是否存在键会影响后续get调用,hadoop,hbase,cloudera,Hadoop,Hbase,Cloudera,我肯定我忽略了下面片段中的某些内容,但我不知道是什么。如前所述,如果我包括一个对“exists”的调用,以快速检查表中是否存在该键,那么随后的“get”将不会返回任何结果;然而,注释掉“exists”调用可以使代码正常工作。但是,现在我必须在解析从Hbase获取的结果之前进行额外的检查,以确保它不是空/空的 ... final Get g = new Get(someKey); g.setCacheBlocks(true); g.setMaxVersions(1); g.addColumn(co

我肯定我忽略了下面片段中的某些内容,但我不知道是什么。如前所述,如果我包括一个对“exists”的调用,以快速检查表中是否存在该键,那么随后的“get”将不会返回任何结果;然而,注释掉“exists”调用可以使代码正常工作。但是,现在我必须在解析从Hbase获取的结果之前进行额外的检查,以确保它不是空/空的

...
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。

您不必调用exists。在调用
get()
之后,只需检查
res.isEmpty()