HBASE填坑日志

41次浏览

总结:

1.查询时能用rowKey查询尽量使用rowKey查询,这样hbase能最快确定数据在集群中的哪台机器上。


2.Scan.setReversed(true)、Filter.setReversed(true)可以将查询结果反转,但是有些限制:

使用Scan.setStartRow() Scan.setStopRow()时,如果Scan.setReversed(true)会导致查询不到数据。

使用FilterList时,所有的filter的reversed必须相同,否则会报错(Filters in the list must have the same reversed flag, this.reversed=XXX)。


3.Scan.setBatch()指定最多返回的Cell的数量,防止OutofMemory。


4.分页可以使用PageFilter,但是不能获取所有数据的总数量。


5.Filter.setFilterIfMissing()设置该行是否跳过。


6.可以使用SubstringComparator进行模糊查询;对RowKey使用RowFilter&RegexStringComparator进行正则查询;使用RowFilter&BinaryPrefixComparator对RowKey进行前缀查询。


7.按照时间戳查询可以使用Scan.setTimeRange()。


8.对于查询,使用Filter的效率远远低于使用RowKey(数据量越大越明显),设置合理的RowKey很重要,如果可以,尽量充分利用RowKey。


9.Scan.setMaxResultSize()设置的是二进制字节的大小,不是返回的数据的条数。


10.单条查询使用Get速度永远最快。


11.列族名、RowKey越短越好;能用一个列族搞定的就不要用两个列族,浪费空间,而且不方便查询。


暂时这么多,其他后续补充。

Tags: HBASE

上一篇: 这是第一篇哦...
下一篇: HBASE初探
如果您觉得本文对您的学习或工作有所帮助,您可以打开支付宝,对我的博客进行赞助:
我的支付宝
如果您觉得仍有疑问 OR 发现我的博客中有不正确或侵权的内容,您可以打开手机QQ扫描下面的二维码,联系我本人(备注请注明来自博客):
我的QQ