使用java检索hbase中的任何三个随机限定符
Posted
技术标签:
【中文标题】使用java检索hbase中的任何三个随机限定符【英文标题】:Retrieve any three random qualifier in hbase using java 【发布时间】:2014-05-13 09:44:44 【问题描述】:我的 hbase 表如下所示:
hbase(main):040:0> scan 'TEST'
ROW COLUMN+CELL
4 column=data:108, timestamp=1399972960190, value=-240.0
4 column=data:112, timestamp=1399972960138, value=-160.0
4 column=data:12, timestamp=1399972922979, value=2
4 column=data:120, timestamp=1399972960124, value=-152.0
4 column=data:144, timestamp=1399972960171, value=-240.0
4 column=data:148, timestamp=1399972960152, value=-240.0
4 column=data:16, timestamp=1399972909606, value=9
4 column=data:8, timestamp=1399972917978, value=6
其中所有 4 都是行 id,而 108,112,12... 是限定符。我想从这个表 TEST 中随机获取三个限定符。
我可以获取所有限定符,但不能获取随机的三个限定符。 java中是否有任何shell命令或API可以实现这一点?
【问题讨论】:
如果我只能获得前三个预选赛,没关系。有知道的请回答一下? 【参考方案1】:如果只是获取前三行,请使用 scan shell 命令并将 LIMIT 设置为 3:
hbase(main):001:0> scan 'demo', LIMIT => 3
如果您希望使用 Java API 执行此操作,请在 ResultScanner 上设置一个循环,该循环在第三次迭代后中断。简单易行。
public static void main(String[] args) throws IOException
Configuration conf = HBaseConfiguration.create();
HTable table = new HTable(conf, "demo");
Scan s = new Scan();
ResultScanner rs = table.getScanner(s);
int check = 0;
for(Result r : rs)
if(++check > 3)
break;
for (KeyValue kv : r.raw())
System.out.println("Qualifier : " + Bytes.toString(kv.getQualifier()));
rs.close();
table.close();
如果您希望获得 3 个随机行,请在上述方法中使用 RandomRowFilter。
HTH
【讨论】:
知道这个的请回复***.com/questions/23647908/…以上是关于使用java检索hbase中的任何三个随机限定符的主要内容,如果未能解决你的问题,请参考以下文章