正文
java获取hbase表的rowkey,java查询hbase表数据
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
HBase性能优化-Rowkey&列族设计
1、必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上,避免数据热点现象。rowkey:行键设计的三个原则唯一必须在设计上保证其唯一性。
2、必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上, 避免数据热点现象。
3、目前针对这种较大KeyValue写入性能较差的问题还没有直接的解决方案,好在社区已经意识到这个问题,在接下来即将发布的下一个大版本HBase 0.0版本会针对该问题进行深入优化,详见 HBase MOB ,优化后用户使用HBase存储文档、图片等二进制数据都会有极佳的性能体验。
hbase的主键
RowKey 与nosql数据库们一样,RowKey是用来检索记录的主键。访问HBASE table中的行,只有三种方式:通过单个RowKey访问(get)通过RowKey的range(正则)(like)全表扫描(scan)RowKey行键 (RowKey)可以是任意字符串(最大长度是64KB,实际应用中长度一般为 10-100bytes),在HBASE内部,RowKey保存为字节数组。
RowKey与nosql数据库们一样,RowKey是用来检索记录的主键。HBase是介于MapEntry(key&value)和DBRow之间的一种数据存储方式。hbase使用的是jdk提供的ConcurrentSkipListMap,并对其进行了的封装,Map结构是KeyValue,KeyValue的形式。Concurrent表示线程安全。
Mongodb 主键是“_id”,主键上面可以不建索引,记录插入的顺序和存放的顺序一样,hbase的主键就是row key,可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组。存储时,数据按照Row key的字典序(byte order)排序存储。
Region 压力 2 Region 分区 首先 自增来做不是不可以。 但是有很大的局限性。 比如你用自增做主键了。 那么你的 Region 几乎都在一台机器上, 发挥不出集群的性能, 这样的设计将导致效率低下。如果你这样做了, 那么挽救办法就是 Region 分区。 假设你分区 以数字分区。
hash(主键) + 年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中,效果最好。
region(相当于数据库的分表)可以ms级动态的切分和移动,保证了负载均衡性。像这样预先创建hbase表分区的方式,称之为预分区。hash(主键)+年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中,效果最好。
为了在hbase中确定一个单元格需要几个参数
HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行键,列明,时间戳定位)。通常来说,通过行键,值来筛选数据的应用场景较多。
必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上, 避免数据热点现象。
HBase的逻辑结构中,每一条数据都要有rowkey,通过rowkey可以查询行键。访问HBase中的数据有三种方式:通过单一行键访问,通过一组行键访问,或者通过行和列交汇形成的单元格访问。每个单元格都保存着一个数据的多个版本,版本通过时间戳来区别。数据都以二进制形式存储,没有数据类型的区别。
关于java获取hbase表的rowkey和java查询hbase表数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。