我有一个包含8G数据的HBase表.
当我在该表上使用部分键扫描来检索给定键的值时,我得到几乎恒定的时间值检索.
当我使用a时Get,所花费的时间远远大于扫描时间.但是当我查看代码时,我发现它Get本身使用的是Scan.
任何人都可以解释这个时差吗?
正确,当您发出Get时,会在幕后发生扫描.Cloudera的博客文章证实了这一点:"每次发出获取或扫描时,HBase扫描(原文如此)通过每个文件来查找结果."
我无法确认您的结果,但我认为线索可能在于您的"部分密钥扫描".比较部分键扫描和获取时,请记住用于Get的行键可以是比用于扫描的部分键长得多的字符串.
在这种情况下,对于Get,HBase必须进行确定性查找,以确定需要匹配和获取的行键的确切位置.但是使用部分密钥,HBase不需要查找确切的密钥匹配,只需要找到该密钥前缀的更近似位置.
答案是:这取决于.我认为这将取决于:
可能还有其他因素.
| 归档时间: |
|
| 查看次数: |
7244 次 |
| 最近记录: |