我是Hbase的新手。
我有一个场景,我需要根据状态和当前日期提取文件名。
所以我创建了3列; filename
表中的status
,date
和Hbase
。
如何根据status=true
和日期是今天的条件获取文件名?
此查询需要在Hbase shell上执行。
答案 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}
您可以导入任何其他Filters
,Comparator
,Java
个对象等
我使用SubstringComparator
进行测试
在你的情况下它应该是BinaryComparator
(也可能是更好的性能)。
如果您想了解有关类似黑客的更多信息,请参阅this问题。
希望它有所帮助。