我试图减小HBase表的大小并遇到过这个问题:
http://prafull-blog.blogspot.co.uk/2012/06/how-to-calculate-record-size-of-hbase.html
表示为表中的每一列存储了rowkey。这看起来非常浪费,并且需要我特别注意添加到rowkey的每个字节,因为添加到表中的字节数将是存储的列总数。此外,我希望每一行都作为文档存储在数据库中的单个密钥下,但这并不是这样。那么,为什么这样实现呢?
答案 0 :(得分:2)
毫无疑问,对于HBase架构而言,rowkey设计是最重要的决定。您是否尝试过启用DATA_BLOCK_ENCODING => 'PREFIX'作为一种去除磁盘上行键字节的方法?
答案 1 :(得分:0)
HBase是一个面向列的数据库。因此,即使您有行和列视图,数据在内部存储的方式也不同。实体被设计为以单行存在。但是,存储是在记住列的情况下完成的。当区域服务器出现时,列族是对事物进行分组的扩展。由于每个列族都存储在单独的区域服务器中。
Hbase也是基于行键索引的。每个列限定符都有其行键信息,查询时,每个单元格独立的结果更快。