DataBlock压缩类型

  • 1.prefix


HBase中的prefix_tree


  • 2.diff


diff与prefix一样,先会和前一条KV进行全面的比较,而不重复写入相同的信息,因为同一个block肯定隶属于同一个cf,所以cf也只写入一次
具体结构:

  • flag(1bytes)

           bit 0,若1,Key长度相同
           bit 1,若1,Value长度相同
           bit 2,若1,type相同 
           bit 3,若1,则写入的timestamp是差值 
           bit 4~6,表示数字0-7,代表timestamp或差值的字节数 
           bit 7,若1,timestamp或差值取相反数(如timestamp差值为负,则写入绝对值,因为绝对值较小)
  • 新key长度(与上一条key长度不一致,一致则忽略)(1~5 bytes)(7-bit encoding) 
  • 新key长度(与上一条value长度不一致,一致则忽略)(1~5 bytes)(7-bit encoding)
  • 与上一条key(不含timestamp和type)相同部分的长度(1~5 bytes)(7-bit encoding)
  • 剩余key内容(不含timestamp和type)

          cf信息(如果为block第一条KV)
          col信息
  • timestamp或同上一条timestamp差值(取二者最小值)(1-8 bytes)
  • type(若与上一条相同则忽略)(1 bytes)
  • value信息


  • 3.fast_diff


fast_diff与prefix一样,只是做了细微的调整,降低了压缩量,同时提高了压缩速度降低了系统资源的消耗
具体结构:

  • flag(1bytes)           

           bit 0~2,表示数字0-7,代表timestamp字节数 
           bit 3,若1,key长度相同
           bit 4,若1,value长度相同 
           bit 5,若1,type相同
           bit 6,若1,value内容相同
           bit 7,无
  • 新key长度(与上一条key长度不一致,一致则忽略)(1~5 bytes)(7-bit encoding)
  • 新value长度(与上一条value长度不一致,一致则忽略)(1~5 bytes)(7-bit encoding)
  • 与上一条key(不含timestamp和type)相同部分的长度(1~5 bytes)(7-bit encoding)
  • 剩余key内容(不含timestamp和type)     

          cf信息(如果为block第一条KV)
          col信息
  • timestamp(1-8 bytes)
  • type(若与上一条相同则忽略)(1 bytes)
  • value信息(若与上一条相同则忽略)

          


0 个评论

要回复文章请先登录注册