2

我是 HBase 的新手,必须使用复合键作为主键。请告诉我

How to make composite-key in hbase?
And How to search a record using that composite-key?
4

2 回答 2

6

只需加入密钥的各个部分并使用它。没什么特别的。假设您有一个客户表,并且您希望有一个由 CustID 和 Timestamp 组成的行键。然后您想获取特定用户的所有结果,而不考虑时间戳。你会做这样的事情:

public static void main(String[] args) throws IOException {

    Configuration conf = HBaseConfiguration.create();
    HTable table = new HTable(conf, "demo");
    String CustID = "tar024";
    byte[] rowKey = Bytes.add(Bytes.toBytes(CustID), Bytes.toBytes(System.currentTimeMillis()));

    //Put the data
    Put p = new Put(rowKey);
    System.out.println(Bytes.toString(rowKey));
    p.add(Bytes.toBytes("cf"), Bytes.toBytes("c1"), Bytes.toBytes("VALUE"));
    table.put(p);

    //Get the data
    Scan s = new Scan();
    Filter filter = new PrefixFilter(Bytes.toBytes("tar024"));
    s.setFilter(filter);
    ResultScanner rs = table.getScanner(s);
    for(Result r : rs){
        System.out.println("VALUE : " + Bytes.toString(r.getValue(Bytes.toBytes("cf"), Bytes.toBytes("c1"))));
    }
    rs.close();
    table.close();
}

高温高压

于 2013-09-06T10:44:58.740 回答
0

对我来说,最好的方法是使用 Orderly。它是一个库,可帮助您创建复合键并对其进行排序。链接到有序 。您还可以在设置开始和停止行键的扫描操作中使用它。

于 2014-02-12T15:20:55.667 回答