本文主要是介绍Phoenix / HBase中的salted table,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
What are salted tables
为了避免读写HBase表数据时产生hot-spot问题,我们使用Phoenix来创建表时可以采用salted table。
salted table可以自动在每一个rowkey前面加上一个字节,这样对于一段连续的rowkeys,它们在表中实际存储时,就被自动地分布到不同的region中去了。当指定要读写该段区间内的数据时,也就避免了读写操作都集中在同一个region上。
简而言之,如果我们用Phoenix创建了一个salted table,那么向该表中写入数据时,原始的rowkey的前面会被自动地加上一个byte(不同的rowkey会被分配不同的byte),使得连续的rowkeys也能被均匀地分布到多个regions。
Examples
安装Phoenix
本文使用的Phoenix版本是4.3.1,可以从这里下载
Hadoop平台为 CDH 5.2.1,其中的HBase版本为HBase 0.98.6-cdh5.2.1。
创建salted table
CREATE TABLE "test:salted"(pk VARCHAR PRIMARY KEY, c1 VARCHAR, c2 VARCHAR, c3 VARCHAR) SALT_BUCKETS=5;
上述语句创建了一个名为”test:salted”的table(HBase中事先要创建名为test的namespace),SALT_BUCKETS=5
说明该salted table由5个bucket组成(必须在1~256之间)。
注:上面在创建table时,没有指定family,只指定了qualifier(c1, c2, c3),因此在HBase shell向表salted写入数据时,column name 要写成’0:[qualifier]’(如’0:c1’),否则HBase会报错:
这篇关于Phoenix / HBase中的salted table的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!