Phoenix / HBase中的salted table

本文介绍了Phoenix中的盐分表(salted table)概念,用于防止HBase的热点问题。通过Phoenix创建salted table,数据会被均匀分布到多个region。示例展示了如何安装Phoenix,创建salted table以及通过Phoenix和HBase shell写入数据的区别。强调了使用Phoenix SQL进行读写的重要性,以及在导入CSV数据时可能遇到的JDK版本问题。
摘要由CSDN通过智能技术生成

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会报错:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值