HBase的Rowkey设计(mark)
2024-09-13 00:50:03
在HBase中细节上的设计,最最最重要的就是我该选取什么做Rowkey,Rowkey的选择,最直接的影响就是对你之后分析数据的影响了。
Rowkey是不可分割的字节数,按照字典排序由低到高存储在表中。一个空的数组用来标识表空间的起始或结尾。
在设计HBase表时,Rowkey设计是最重要的事情,应该基于预期的访问模式来为Rowkey建模。Rowkey决定了访问HBase表时可以得到的性能,原因有两个:Region基于Rowkey为一个区间的行提供服务,并且负责区间的每一行;HFile在硬盘上存储有序的行。当Region将内存数据刷写为HFile时,这些行已经排过序了,也会有序的写到硬盘上。Rowkey的有序特性和底层存储格式可以保证HBase表在设计Rowkey之后的良好性能。
关系型数据库可以在多列上建立索引,但是HBase只能在Rowkey上建立索引。访问数据库的最主要方式就是使用Rowkey。非Rowkey访问,即在不清楚Rowkey前提下访问表,可以使用全表扫描。设计Rowkey有各种技巧,而且可以针对不同访问模式进行优化。
Rowkey是HBase的KeyValue存储中的Key,通常将用户要查询的字段作为Rowkey,查询结果作为Value。
设计Rowkey之前,要注意一下几点:
1,Rowkey是以字典顺序从大到小排序
原生HBase只支持从小到大的排序
2,尽量散列Rowkey设计
散列之后的数据,就能保证所有的数据都不是在一个Region上,从而避免读写的时候负载会集中在个别Region上。
3,RowKey的长度尽量短
如果Rowkey太长,第一存储开销会增加,影响存储效率;第二内存中Rowkey字段过长,会导致内存的利用率降低,进而减低索引命中率。
一般做法:
时间使用Long来表示;
尽量使用压缩编码;
最新文章
- C#扩展方法
- java正则表达式的使用
- Spring管理 hibernate 事务配置的五种方式
- Java编程思想学习(三) 初始化与清理
- D类 E类地址
- hdu 2047
- 如何让对象只在堆或者栈中分配空间ANDC++禁止一个类被继承
- putty 默认设置
- Python作业之分页显示内容
- Spring中的ApplicationContextAware使用
- 潭州课堂25班:Ph201805201 爬虫基础 第十三课 cookie (课堂笔记)
- 构造方法调用另一个构造方法,用this
- 004.Zabbix3.x-Server服务端安装
- django-rest-framework登陆认证
- git Push failed: Could not read from remote repository 解决方案
- 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S
- js 中实现aop
- 爱奇艺、腾讯、优酷、搜狐、芒果、乐视、PPTV、音悦台等VIP视频免费观看
- 缩略图信息提取工具vinetto
- Sql_server_2014创建数据库自动备份
热门文章
- 为什么有时候NSData转换成NSString的时候返回nil
- [翻译] DKTagCloudView - 标签云View
- Centos7下Mysql通过.frm和.ibd恢复数据
- 编程题1001.A+B Format (20)
- Gsoap在QT工程里如何调用
- 一个查询ip地址的mysql数据库--ip2nation
- Android 高级UI设计笔记23:Android 夜间模式之 两种常用方法(降低屏幕亮度+替换theme)
- jQuery放大镜插件
- ethereumjs/ethereumjs-common-3-test
- python matplotlib quiver——画箭头、风场