HBase中建立分区表

匿名 (未验证) 提交于 2019-12-03 00:30:01

在HBase中,每个表默认时都由一个Region存储原数据,但是若当数据慢慢增加时,就会将一个Region分裂成其他若干个不同的region。但是这种无序的分裂,会让后期的表扫描,表过滤操作很不方便(特别耗时)。正是着眼于未来表的改变,于是有了为表创建分区的操作。
一个有效的提高批量导入的性能的方式,是预创建空的区域。但同时需要稍微保守一点,因为过多的区域会实实在在的降低性能。根据hbase中rowkey的分布,可以设置相应的region(分区)。这样就可以防止大数据插入时的热点问题,提高数据插入的效率。但是与此同时我们会遇到几个问题:

  • 01.数据的rowkey是如何分布的?
  • 02.规划一下需要分成多少region?每个region的startkey和endkey是多少?
  • 03.该根据怎样的分区键分区?

每个分区都由一对分区键控制,如果需要创建一个分区表,那么首先得确定该表以什么键分区。一般来说,因为在ASCII码表中,最大的可打印字符是~,接着就是|。所以我们就可以选择这两种字符作为分区键的标识来结束。在本篇博客里,我使用|作为标识。设置的分区键如下:

[root@littlelawson ~]# cat region_split_info.txt  0001| 0002| 0003| 0004| 0005| 0006| 0007| 0008| 0009|

这里的第一行是第一个regionstopkey, 最后一行不仅是倒数第二个regionstopkey,同时你也是最后一个regionstartKey。也就是说上述的几个值都是key取值范围的分割点。通过9个分割点,便可以得到10个分区。如下所示:
_r1_|_r2_|_r3_|_r4_|_r5_|_r6_|_r7_|_r8_|_r9_|_r10_|这里的r1指的就是region1,其它以此类推。
以该文件中的内容作为分区键,创建一个含分区的表命令如下:
create 'split_table_test','cf',{SPLITS_FILE=>'region_spilit_into.txt'}
执行结果如下所示:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!