Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

6年前关闭。



Improve this question




我是HBase的新手,必须使用Composite-Key作为行键。请告诉我

以及如何使用该复合键扫描或获取某些记录?(在R.K的第1和第2以及其他部分)(例如,Rowkey:在tom上扫描)

编辑:行键是字节数组(这在问题上同样重要)

最佳答案

    Configuration conf = HBaseConfiguration.create();
    HTable table = new HTable(conf, "t1");
    Scan s = new Scan ();
    RegexStringComparator keyRegEx = new RegexStringComparator(".*tom.*");
    RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new  RegexStringComparator(".*tom.*"));
    s.setFilter(rowFilter);
    ResultScanner scanner = table.getScanner(s);
    Iterator<Result> it = scanner.iterator();
    while(it.hasNext()){
        // ... your code ...

}

只需根据您的要求更改正则表达式即可。 .*?-tom-.*在这里会很好。

根据修改,上面的答案将不成立。如果将行键作为字节数组非常重要,请使用FuzzyRowFilter

引用javadocs

**根据模糊行键过滤数据。在扫描过程中执行快进。它需要成对(行键,模糊信息)来匹配行键。其中模糊信息是一个字节数组,其值为0或1:

0-表示提供的行键中的此字节是固定的,即,行键在相同位置的字节必须匹配

1-表示提供的行键中的此字节未固定,即此位置处的行键的字节可以与提供的行键中的字节不同

示例:假设行键格式为userId_actionId_year_month。 userId的长度是固定的,为4,actionId的长度为2,年和月的长度分别为4和2个字节。假设我们需要获取在每年的1月执行了某些操作(编码为“99”)的所有用户。然后,该对(行键,模糊信息)将为以下内容:行键=“???? 99 ???? _ 01”(可以使用任何值代替“?”)模糊信息=“\ x01 \ x01 \ x01 \ x01 \ x00 \ x00 \ x00 \ x00 \ x01 \ x01 \ x01 \ x01 \ x00 \ x00 \ x00“即模糊信息告诉匹配的掩码是“???? 99 ???? _ 01”,在哪里?可以是任何值。**

关于java - 扫描HBase中的复合键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22892130/

10-10 16:42