在我的HBase表中,每行可能与其他行具有不同的列。例如;
行列1-1040 cf:s11-1040 cf:s21-1043 ……
HBase将给定列族的所有记录存储在同一文件中,因此即使应用过滤器,扫描也必须在所有键值对上运行。对于您建议存储数据的两种方式都是如此。
为了获得此特定扫描的最佳性能,您应该考虑存储您的 s2 不同列族中的数据。在引擎盖下,HBase将以下列方式存储您的数据:
s2
一个文件:
1-1040 cf1:s1 2-1040 cf1:s5 2-1045 cf1:s99 3-1040 cf1:s75 3-1042 cf1:s135
另一个档案:
1-1040 cf2:s2 1-1043 cf2:s2
然后你可以运行扫描 cf2 ,HBase只会读取包含的数据 s2 ,使操作更快。
cf2
scan 'tb', {COLUMNS => 'cf2', STARTROW=>'1-1040s2', ENDROW=>'1-1044'}
注意事项:
s5
s75