Hbase shell:如何根据特定的多列值扫描行

时间:2014-08-08 07:00:32

标签: hbase

Hbase新手,没有配置hive或impala。 :-( 现在想要根据多个列值扫描表的行 假设表A有4列aa,ab,ac,ad。我希望表的所有行满足列ab&的值条件。广告。

其他查询是如何在多个表上查询,假设表中存在外部键。

2 个答案:

答案 0 :(得分:0)

重申您的情景:一个HBase表名为 A ,一个列族 CF1 ,其中有四个列限定符,即 aa,ab,ac ,广告

您的要求是获得符合两列限定符ab&的行。广告条件

  

此实现的方法是使用SingleColumnValueFilter。   根据需要创建过滤器列表(在您的情况下为两个过滤器列表)   并按相关顺序添加过滤器

如果您有两个不同的列族(A& B),那么 扫描' A' ,{COLUMNS => [' A:AA' ,' B:ab']}

在你的第二个问题中,外键是什么意思?如果要引用唯一的复合密钥标识符,则浏览辅助索引。

答案 1 :(得分:0)

对于扫描单个hbase表中多列的行,您可以使用Hbase Api,以下java代码可以解决您的问题。

 SingleColumnValueFilter f1 = new SingleColumnValueFilter(Bytes.toBytes("0"), Bytes.toBytes("EMP_KEY"), CompareFilter.CompareOp.LESS_OR_EQUAL, Bytes.toBytes(500));
  SingleColumnValueFilter f2 = new SingleColumnValueFilter(Bytes.toBytes("0"), Bytes.toBytes("DEPT_KEY"), CompareFilter.CompareOp.EQUAL, Bytes.toBytes(204));

  FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL); //could be FilterList.Operator.MUST_PASS_ALL instead
  filterList.addFilter(f1);
  filterList.addFilter(f2);

  Scan scan = new Scan();
  scan.setFilter(filterList);