如何在海量的数据中获取相关的数据?长会使用
rowkey查询最快(通常对rowkey进行范围扫描(慎用filter!));
rowkey的匹配方式是前缀匹配;
如果有多种查询方式,通常使用hbase索引表来辅助主表进行快速查询;
主表和索引表的数据如何同步呢?
使用solr,将hbase表中几个重要的字段使用solr进行索引,solr检索出来以后再使用get查询出hbase中相关的记录(通常使用lily或cloudera search来做);
需要出示导入数据的表再创建时考虑预分区(split to generate multiple regions)
create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
create 't1', 'f1', SPLITS_FILE => 'splits.txt'
create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
> describe 'default:user'
'user',
{
NAME => 'info',
BLOOMFILTER => 'ROW',
VERSIONS => '1',
IN_MEMORY => 'false',
KEEP_DELETED_CELLS => 'false',
DATA_BLOCK_ENCODING => 'NONE',
TTL => 'FOREVER',
COMPRESSION => 'NONE',
MIN_VERSIONS => '0',
BLOCKCACHE => 'true',
BLOCKSIZE => '65536',
REPLICATION_SCOPE => '0'
}
#BLOOMFILTER=>'ROW'
设置布隆过滤器为ROW,二进制向量数据结构,具有很好的空间和时间效率,用来检测一个元素是不是集合中的一个成员。
#VERSIONS=>'1'
#MIN_VERSIONS=>'0'
表示存储的版本数为1,最小版本数为0
#COMPRESSION => 'NONE'
设置数据压缩的格式(默认不压缩)
###