hbase建表时region预分区的方法

2023-11-13

2015-06-05 13:43  866人阅读  评论(0)  收藏  举报
  分类:

版权声明:本文为博主原创文章,未经博主允许不得转载。

如果知道hbase数据表的key的分布情况,就可以在建表的时候对hbase进行region的预分区。这样做的好处是防止大数据量插入的热点问题,提高数据插入的效率。


步骤:

1.规划hbase预分区


首先就是要想明白数据的key是如何分布的,然后规划一下要分成多少region,每个region的startkey和endkey是多少,然后将规划的key写到一个文件中。比如,key的前几位字符串都是从0001~0010的数字,这样可以分成10个region,划分key的文件如下:

[plain]  view plain  copy
  1. 0001|  
  2. 0002|  
  3. 0003|  
  4. 0004|  
  5. 0005|  
  6. 0006|  
  7. 0007|  
  8. 0008|  
  9. 0009|  

为什么后面会跟着一个"|",是因为在ASCII码中,"|"的值是124,大于所有的数字和字母等符号,当然也可以用“~”(ASCII-126)。分隔文件的第一行为第一个region的stopkey,每行依次类推,最后一行不仅是倒数第二个region的stopkey,同时也是最后一个region的startkey。也就是说分区文件中填的都是key取值范围的分隔点,如下图所示:


2.hbase shell中建分区表,指定分区文件


在hbase shell中直接输入create,会看到如下的提示:

[sql]  view plain  copy
  1. Examples:  
  2.   
  3. Create a table with namespace=ns1 and table qualifier=t1  
  4.   hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}  
  5.   
  6. Create a table with namespace=default and table qualifier=t1  
  7.   hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}  
  8.   hbase> # The above in shorthand would be the following:  
  9.   hbase> create 't1''f1''f2''f3'  
  10.   hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}  
  11.   hbase> create 't1', {NAME => 'f1', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}  
  12.     
  13. Table configuration options can be put at the end.  
  14. Examples:  
  15.   
  16.   hbase> create 'ns1:t1''f1', SPLITS => ['10''20''30''40']  
  17.   hbase> create 't1''f1', SPLITS => ['10''20''30''40']  
  18.   hbase> create 't1''f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'  
  19.   hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }  
  20.   hbase> # Optionally pre-split the table into NUMREGIONS, using  
  21.   hbase> # SPLITALGO ("HexStringSplit""UniformSplit" or classname)  
  22.   hbase> create 't1''f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}  
  23.   hbase> create 't1''f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}  
  24.   hbase> create 't1', {NAME => 'f1'}, {NAME => 'if1', LOCAL_INDEX=>'COMBINE_INDEX|INDEXED=f1:q1:8|rowKey:rowKey:10,UPDATE=true'}  


可以通过指定SPLITS_FILE的值指定分区文件,如果分区信息比较少,也可以直接用SPLITS分区。我们可以通过如下命令建一个分区表,指定第一步中生成的分区文件:

[sql]  view plain  copy
  1. create 'split_table_test''cf', {SPLITS_FILE => 'region_split_info.txt'}  


假如我还想对hbase表做一个SNAPPY压缩,应该怎么写呢?

[sql]  view plain  copy
  1. create 'split_table_test',{NAME =>'cf', COMPRESSION => 'SNAPPY'}, {SPLITS_FILE => 'region_split_info.txt'}  
这里注意,一定要将分区的参数指定单独用一个大括号扩起来,因为分区是针对全表,而不是针对某一个column family。


下面,我们登陆一下master的web页面<Hmaster:60010>,查看一下hbase的表信息,找到刚刚新建的预分区表,进入查看region信息:


我们看到第一个region是没有startkey的,最后一个region是没有stopkey的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hbase建表时region预分区的方法 的相关文章

随机推荐

  • 计算机2.0培训心得,信息技术应用能力提升培训心得体会两篇

    信息技术应用能力提升培训心得体会两篇 篇一 本月 我进行了 教师信息技术应用能力提升工程 的学习 学习过程中的每一天我都过得非常充实 这次的培训我学习到了很多 每一个视频的内容都非常有意义 有价值 所以 这段时间 我很认真的学习了此次的培训
  • 搭建Spark所遇过的坑

    一 经验 1 Spark Streaming包含三种计算模式 nonstate stateful window 2 kafka可通过配置文件使用自带的zookeeper集群 3 Spark一切操作归根结底是对RDD的操作 4 部署Spark
  • 2017-03-01-为你的Github生成漂亮的徽章和进度条

    原文来自为你的Github README生成漂亮的徽章和进度条 欢迎去博主的博客体验更好的阅读感受 github上常见的徽章标签和进度条 平时在上github的时候看到别人写的精美的README 我总是感到非常的羡慕 近来我也开始使用mar
  • qml 实现展示本地文件系统

    遍历本地文件 qt 提供了很多种便利类来实现本地的文件系统管理 比如QDirModel和QFileSystemModel qml中又提供了FolderListModel 需要包含Qt labs folderlistmodel 2 0 笔者的
  • 所有能反演SIF的卫星以及下载链接

    转载自科学网张园博客 http blog sciencenet cn blog 3430406 1223659 html 目录 SCIAMACHY GOME 2 GOSAT OCO 系列卫星 轨道碳观察者 TanSat TROPOMI 调研
  • 信息隐藏预测算法之MED

    MED median edge detector 第一次MED算法概念被提出的论文 http www hpl hp com techreports 98 HPL 98 193 pdf 下图为图像矩阵的一部分 用此为例来说明MED预测算法 其
  • 升级windows10

    前言 windows7已经被微软停更了 所以说 有些用户想升级到windows10 这篇文章 将会教你升级windows10 下载windows10最新安装包 有一个网址 建议大家收藏好 windwos10最新版本官网下载 点进去链接 往下
  • Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class

    From Java中泛型 Class
  • JavaScript Array 对象

    解释 Array 对象用于在变量中存储多个值 语法 var cars Saab Volvo BMW 第一个数组元素的索引值为 0 第二个索引值为 1 以此类推 数组属性 属性 描述 constructor 返回创建数组对象的原型函数 len
  • 数据库关系模型

    数据库关系模型和SQL 文章目录 数据库关系模型和SQL 安装 SQL语句 DCL DDL 关系 候选键 PRIMARY KEY 主键 Foreign KEY 外键 索引Index B 树 约束Constraint 数据库的三大完整性 域约
  • Lua(9) ——Cocos之_从C++过渡到Lua 文章不错 留下备查

    Lua 9 Cocos之 从C 过渡到Lua 唠叨 现在开始学习Lua了 开始用 Cocos Code IDE 开发cocos2dx的游戏了 可是呢 因为 cocos2dx v3 x 刚刚才出来不久 所以网上的教程大部分都是基于C 版本的
  • JNI 基础

    一 JNI 涉及的名词概念 1 1 JNI Java Native Interface 它是Java平台的一个特性 并不是Android系统特有的 实现Java代码调用C C 的代码 C C 的代码也可以调用Java的代码 1 2 二进制库
  • Spring AOP声明式事务

    Spring AOP声明式事务 Spring AOP声明式事务 传统spring配置 SpringBoot配置 Spring AOP声明式事务 Spring AOP声明式事务可以帮我们自动管理事务 在业务操作前后加入事务开始和提交 根据约定
  • vue :class的动态切换

    直接上代码 class index menu index menu index index 点击事件获取下标和获取不同的值 click menuClick index data return menu img menu index0 men
  • 高德地图-2D转换为3D

    手动添加 同时也需要手动修改倾斜度 var map new AMap Map container zoom 17 pitch 90 center 116 379391 39 861536 viewMode 3D 变成了3d 地图了 buil
  • 新能源锂电设备

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 锂电工艺 1 电芯一工段 2 电芯二工段 3 电芯三工段 4 pack生产 二 一工段设备简要介绍 1 合浆机 2 涂布机 2 辊压机 3 分切机 二 一
  • 利用TortoiseGit给github上面上传项目以及上传项目时经常遇到的错误解决

    我们本地有了一个项目 需要托管到github上面去 之前说过用git命令上传 今天说说如何利用TortoiseGit上传 1 假设我们的java工程放在目录E Test中 那么我们进入Test文件夹中 右键菜单点击 Git Create r
  • 关于protected权限的子类访问方式

    声明为protected权限的成员变量和成员方法 可以被同一包中的所有类和不同包中的子类访问 但是 在实际使用中 不同包中的子类要访问父类中protected权限的成员 却不是那么随意的调用 看几个例子 首先在ch13Test包中定义父类A
  • Mysql JDBC支持utf8mb4编码

    项目中需要在mysql中存储包含emoji表情的字段 使用utf8编码无法解决 因为mysql的utf8实现只有3字节 为此mysql在5 3 后加入了utf8mb4支持 完全兼容utf8 utf8mb4最多可用4字节存储一个字符 这样就可
  • hbase建表时region预分区的方法

    hbase建表时region预分区的方法 2015 06 05 13 43 866人阅读 评论 0 收藏 举报 分类 hbase 6 版权声明 本文为博主原创文章 未经博主允许不得转载 如果知道hbase数据表的key的分布情况 就可以在建