Hadoop HBase扫描和检索单个列

Hadoop HBase扫描和检索单个列,hadoop,hbase,Hadoop,Hbase,我试图了解HBase在存储数据时使用的数据模型,以便规划更有效的应用程序数据组织。特别是,我正试图了解计划拥有一个包含大量列的列族是否明智——这在行之间也会有所不同——因为我知道一次只需要读几列 根据, HBase一次读取整行,因此您可以指示HBase 客户端只返回某些列,这不会加快您的速度 询问 现在,如前所述,这是错误的,因为您当然可以从一个列族中读取数据。因此,将上述引号中的整行替换为整列族。这是真的吗 也就是说:在HBase中读取单个列是否真的需要读取整个列系列(不管实际返回给客户端的是

我试图了解HBase在存储数据时使用的数据模型,以便规划更有效的应用程序数据组织。特别是,我正试图了解计划拥有一个包含大量列的列族是否明智——这在行之间也会有所不同——因为我知道一次只需要读几列

根据,

HBase一次读取整行,因此您可以指示HBase 客户端只返回某些列,这不会加快您的速度 询问

现在,如前所述,这是错误的,因为您当然可以从一个列族中读取数据。因此,将上述引号中的整行替换为整列族。这是真的吗


也就是说:在HBase中读取单个列是否真的需要读取整个列系列(不管实际返回给客户端的是什么)?当执行扫描而不是直接查找时,这种情况会发生变化吗?

据我所知,不,它只需要读取存储列的块,而不是整个系列。此外,根据文档,建议将列族数保持在尽可能低的水平()@rmruano那么它如何定位块呢?由于每行可以有一组不同的列,因此没有预定义的偏移量来开始读取。它是否必须遍历所有列族,直到找到该列为止?或者尝试通过重复的二等分来保持列的排序并定位正确的列?据我所知,HBase非常高效,只读取它所需要的内容,因此我非常有信心只请求几列,无论是简单的get还是完整的表扫描。它存储在HFile索引中的位置,您可以在此处找到有关它的更多信息:&