0
我通過Java API使用HBase來管理等待由具有多個線程的刮刀分析的URL和參數列表。該程序還不斷向表中添加新行。在HBase中佔用一行
我需要從表中不斷讀取一行,並自動刪除它(一行不能同時被兩個線程讀取),而不需要選擇一行而不是另一行。
目前,我創建了一個掃描儀和檢索的第一個結果:
Scan s = new Scan();
ss = t.getScanner(s);
for(Result r:ss){
String ris=Bytes.toString(r.getRow())+Bytes.toString(r.getValue(Bytes.toBytes("TTL"),Bytes.toBytes("value")));
//delete the retrieved row
t.delete(new Delete(r.getRow()));
ss.close();
//return at the first iteration, after closing the Scanner
return ris;
}
但程序是超慢的(也就是10秒鐘以上,將獲得的值),我不知道有關如何很好地做到這一點。我如何「消費」HBase中的單行?
編輯:我忘了提的是,表中有一列家族與單個列
這似乎是一個好主意,我可以將結果大小限制爲1個。不知道,謝謝! – Jacopofar