如何根据Hbase shell中的where子句等条件获取列值

时间:2015-07-22 14:18:59

标签: hbase

我是Hbase的新手。

我有一个场景,我需要根据状态和当前日期提取文件名。

所以我创建了3列; filename表中的statusdateHbase

如何根据status=true和日期是今天的条件获取文件名?

此查询需要在Hbase shell上执行。

1 个答案:

答案 0 :(得分:2)

以简洁的方式实现这一点很困难。但这就是我所做的。 hbase shell是一个JRuby shell,它使我们能够执行以下示例。

import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.filter.FilterList

filter1 = SingleColumnValueFilter.new(Bytes.toBytes('cf'), Bytes.toBytes('qualifier'), CompareFilter::CompareOp.valueOf('EQUAL'), SubstringComparator.new('valueToSearch'));
filter2 = SingleColumnValueFilter.new(Bytes.toBytes('cf'), Bytes.toBytes('qualifier2'), CompareFilter::CompareOp.valueOf('EQUAL'), SubstringComparator.new('valueToSearch2'));

filterList = FilterList.new([filter1, filter2]);

scan 'table', {FILTER =>  filterList}

您可以导入任何其他FiltersComparatorJava个对象等

我使用SubstringComparator进行测试 在你的情况下它应该是BinaryComparator(也可能是更好的性能)。

如果您想了解有关类似黑客的更多信息,请参阅this问题。

希望它有所帮助。