hadoop - Hbase中的三重复合键

标签 hadoop hbase

我有一个需要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/

相关文章:

java - 使用 Java 准确确定 HDFS 中的文件以加载到一个 Hbase 表中?

sql - 添加一列,这是 Hive 中某些公式的结果

hadoop - GCP Hadoop数据仓库?

java - Hadoop jar-系统找不到指定的路径

scala - ZooKeeper 返回 HBase 服务器地址的垃圾字符

hbase - happybase table.put 是否接受任何字符串值?

java - 更新 HBase 中整列的值

java - 运行简单的mapreduce作业时出现错误 "java.lang.OutOfMemoryError: Java heap space"

hadoop - HBase创建区域

hadoop - HBase checkAndPut 原子性澄清