我有一个需要3级复合键的用例。
例如。
Rollnumber:class:friendsRollNumber
我想查询“获取所有 friend 的特定卷号和类(class)”
我在网上找不到足够的示例来同时使用复合键和范围扫描。
目前,我正在执行以下操作。
byte[]rowkey = Bytes.add(Bytes.tobytes("myrollnumber"),Bytes.tobytes("myClass"),Bytes.tobytes("myFriendsRollNumber"))
这就是我形成行键的方式。
它将基于myRollNumber和myClass选择区域服务器吗?如果没有,我该怎么办?
此外,对于范围扫描,使用它的正确方法是什么。我正在按照以下方式进行操作。我仍在编写代码,因此尚未对其进行测试。
Scan s = new Scan(); Filter f = New PrefixFilter(Bytes.tobytes("myrollnumber"),Bytes.tobytes("class")) s.setFilter(f)
根据我的要求,上述方式是否正确扫描?
另外,如何从扫描仪获取rowKey的各个部分?
最佳答案
试试这个:
byte[] prefix=Bytes.toBytes("rollnumber" + "class");
Scan scan = new Scan(prefix));
PrefixFilter prefixFilter = new PrefixFilter(prefix);
scan.addFilter(prefixFilter);
ResultScanner resultScanner = table.getScanner(scan);
关于hadoop - Hbase中的三重复合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30438052/