我已经读到,在hbase中,一个表中的列族不应超过2-3个。我知道要从一行中的每个列族中获取条目,我需要进行单独的扫描,但是我仍然不知道如果我有更多的列族会出现什么问题?
在我的例子中,我想在hbase中存储20个大小约为10kb的图像,每个图像具有不同的维度(mxn)。所以一般来说,一个特定维度的请求来获取,我需要服务于这个图像。因此,如果我将所有这些图像放在一个列族中,那么所有20个不同维度的图像都将不必要地加载到内存中进行缓存(如果对同一个图像再次发出请求,那么它肯定会对同一维度发出请求)。另一方面,如果我将保留20个列族(每个维度一个),那么只有所需的图像将加载到ram中进行缓存。
1条答案
按热度按时间u59ebvdq1#
我建议尝试将不同的维度存储在同一行中的不同列中,每当有对特定维度的请求时,只添加所需的维度列。由于hbase按块(blockcache)而不是单个值缓存数据,因此将缓存包含所需数据的64k块(默认情况下)。
如果每个表有2-3个以上的列族,您将遇到一些性能问题,如这里所述。
希望这会有帮助。