Hbase外壳:如何基于特定的多列值扫描行

Hbase外壳:如何基于特定的多列值扫描行,hbase,Hbase,Hbase新手,未配置蜂巢或黑斑羚:- 现在希望基于多个列值扫描表中的行 假设表A有4列aa、ab、ac、ad。我希望表中的所有行都满足ab和ad列的值条件 另一个查询是如何在假设表中存在外部键的情况下查询多个表 重申一下您的场景:一个名为A的HBase表,一个列系列CF1,其中有四个列限定符,即aa、ab、ac、ad 您的要求是获取满足两列限定符ab和ad条件的行 此实现的方法是使用SingleColumnValueFilter。 创建过滤器列表,在您的案例中创建两个过滤器列表 并按相关顺序添

Hbase新手,未配置蜂巢或黑斑羚:- 现在希望基于多个列值扫描表中的行 假设表A有4列aa、ab、ac、ad。我希望表中的所有行都满足ab和ad列的值条件


另一个查询是如何在假设表中存在外部键的情况下查询多个表

重申一下您的场景:一个名为A的HBase表,一个列系列CF1,其中有四个列限定符,即aa、ab、ac、ad

您的要求是获取满足两列限定符ab和ad条件的行

此实现的方法是使用SingleColumnValueFilter。 创建过滤器列表,在您的案例中创建两个过滤器列表 并按相关顺序添加过滤器

如果有两个不同的柱族A和B,则 扫描'A',{COLUMNS=>['A:aa','B:ab']}


在第二个问题中,您所说的外键是什么意思?如果您引用的是一个唯一的复合键标识符,那么请浏览辅助索引

要扫描单个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);