hbase新手,未配置Hive或 Impala 。:-(现在我想基于多个列值扫描一个表的行,比如说让表a有4列aa、ab、ac、ad。我想要表中满足ab列和ad列值条件的所有行。另一个查询是如何查询多个表,假设表中存在外部键。
a14dhokn1#
只是重申一下您的场景:一个名为a的hbase表,一个列族cf1,其中有四个列限定符,即aa、ab、ac、ad您的要求是获得满足两列限定符ab&ad条件的行这种实现的方法是使用singlecolumnvaluefilter。创建筛选器列表,根据需要创建多个(在您的情况下有两个筛选器列表),并按相关顺序添加筛选器如果您有两个不同的列族(a&b),那么扫描'a',{columns=>['a:aa','b:ab']}在你的第二个问题中,你所说的外键是什么意思?如果您引用的是一个唯一的复合键标识符,那么请浏览辅助索引。
jecbmhm32#
要扫描单个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);
2条答案
按热度按时间a14dhokn1#
只是重申一下您的场景:一个名为a的hbase表,一个列族cf1,其中有四个列限定符,即aa、ab、ac、ad
您的要求是获得满足两列限定符ab&ad条件的行
这种实现的方法是使用singlecolumnvaluefilter。创建筛选器列表,根据需要创建多个(在您的情况下有两个筛选器列表),并按相关顺序添加筛选器
如果您有两个不同的列族(a&b),那么扫描'a',{columns=>['a:aa','b:ab']}
在你的第二个问题中,你所说的外键是什么意思?如果您引用的是一个唯一的复合键标识符,那么请浏览辅助索引。
jecbmhm32#
要扫描单个hbase表中多列上的行,可以使用hbase api,下面的java代码可能会解决您的问题。