Hbase的表(五)

KinglyJn      2017-08-26

hbase表设计的核心

如何在海量的数据中获取相关的数据?长会使用

  • rowkey查询最快(通常对rowkey进行范围扫描(慎用filter!));

  • rowkey的匹配方式是前缀匹配;

  • 如果有多种查询方式,通常使用hbase索引表来辅助主表进行快速查询;

    主表和索引表的数据如何同步呢?

    • 可以自己写程序完成(事务);
  • 使用apache phoenix,Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对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'}
    


hbase表的属性

> 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'
设置数据压缩的格式(默认不压缩)


###


Tags:


Share: