0
我正在通過HBase客戶端閱讀HBase Cell標籤。HBase Cell標籤在Scan中返回,但不在獲取
我通過Put.addImmutable(cf,col,version,value,tags)編寫標籤。
我可以確認這些標籤已經被掃描HBase的正確書寫:
Scan s = new Scan();
s.setFilter(new PageFilter(100));
ResultScanner scanner = table.getScanner(s);
Result[] results = scanner.next(100);
Arrays.stream(results).forEach(r -> {
CellScanner cs = r.cellScanner();
try {
while(cs.advance()) {
byte tagValue = ((KeyValue)cs.current()).getTags()
.stream()
.filter(tag -> tag.getType() == MY_SPECIAL_TAG_TYPE)
.findFirst().orElseThrow(() -> new RuntimeException("No tag found"))
.getValue();
System.out.println("tagValue=" + Bytes.toString(tagValue));
}
} catch(IOException e) {
}
});
我總是說我對認沽設置正確的值。
但是,當我做一個行密鑰獲取我知道存在 - 請參閱下面的代碼 - 並嘗試訪問標籤,我沒有返回值。
Get g = new Get(Bytes.toBytes("myKey");
Result r = table.get(g);
CellScanner cs = r.cellScanner();
try {
while(cs.advance()) {
byte tagValue = ((KeyValue)cs.current()).getTags()
.stream()
//.filter(tag -> tag.getType() == MY_SPECIAL_TAG_TYPE)
.findFirst().orElseThrow(() -> new RuntimeException("No tag found"))
.getValue();
System.out.println("tagValue=" + Bytes.toString(tagValue));
}
} catch(IOException e) {
}
}
我犯了一個錯誤,還是這是HBase客戶端API的限制,不能從獲取查詢返回標記嗎?
只有在使用HBaseTestingUtility時纔會發生這種情況。這對於HBase的實際實例不會發生。 – richardstartin