HBase Key-Value的组成
在HBase中,Key-Value是最小的存储单元。在这个存储单元中,每一个Key-Value对应一个列。Value对应于一个列的列值。在HBase中Key-Value都是以Byte数组的形式存储的。下面我们看一下Key-Value的具体存储格式:
KeyLength
ValueLength
RowKeyLength
RowKey
ColumnFamilyLength
ColumnFamily
Qualifier
TimeStamp
Type
Value
在HBase中,Key-Value存储是以KeyValue类进行表示的,Key-Value共有四部分组成:Key、TimeStamp、Type和Value四部分组成。
KeyLength:KeyLength=KEY_INFRASTRUCTURE_SIZE + RowKeyLength + ColumnFamilyLength+QualifierLength。进一步将,Key由RowKey、ColumnFamily和Quailifier三部分组成。KeyLength由这三部分的长度加上一个定长组成。
ValueLength:ValueLength指的是value的长度。
由上面的分析我们可以知道如何获取RowKey、ColumnFamily、Qualifier、Timestamp和Value。首先,可以读取KeyLength和ValueLength。根据KeyLength一次性可以读出RowKey、ColumnFamily和Qualifier,然后再根据这三部分不同的长度依次读取各部分。TimeStamp和Type的类型分别是long和byte;读取完Key就可以读取定长的long和byte,剩余的即为value。