鉴于此数据:
row_key cf1:c1 cf1:c2 timestamp
------------------------------------------------------------
1 x t1
1 y t2
HBase get同时返回x和y。我通常希望它只返回y(因为这是最新的时间戳)。但事实并非如此。
有几种方法可以解决这个问题。
我希望我只是错过了一个简单易用的解决方案。
答案 0 :(得分:0)
我认为这里的版本控制被误解了。虽然版本(元数据)维护在ColumnFamily级别,但版本仍保持在单元级别。因此在您的示例中,cf1:c1只有一个版本,所以在扫描期间,显然这将是最新版本的单元格。
详细说明,请参阅下面的截图。
我通过HBase version in document了解,也可能对你有所帮助。
答案 1 :(得分:0)
可以使用HBase提供的'DependentColumnFilter'解决此问题。 DependentColumnFilter帮助仅读取具有最新时间戳的列。 因此,将仅获取具有最新时间戳的所有列。
如果仅扫描hbase shell上的hbase表,仍然会看到“ null”列具有值,但是时间戳记会很旧。
PS:此过滤器必须应用于不会总是为空的列(根据您的业务)。