检查Hbase表中是否存在密钥会影响后续的get call

时间:2015-05-20 06:32:34

标签: hadoop hbase cloudera

我确定忽略了下面代码段中的内容,但我无法弄清楚是什么。如上所述,如果我包含对“存在”的呼叫。为了快速检查密钥是否存在于表格中,随后的“获取”密码。最终没有回来;评论'存在'但是,调用使代码工作。但是,现在我必须在解析从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。

1 个答案:

答案 0 :(得分:0)

您不必调用存在。只需在res.isEmpty()电话

后查看get()即可