如何使用 WholeRowIterator 作为另一个迭代器的源?

How to use a WholeRowIterator as the source of another iterator?

我试图在使用 WholeRowIterator 筛选行后筛选出列。这是为了删除对确定要保留的行有用但对扫描返回的数据没有用的列。

WholeRowIterator 似乎不能作为另一个迭代器(例如 RegExFilter)的源。我知道 keys/values 是由 WholeRowIterator 编码的。

是否有任何可能的解决方案可以使此迭代器堆栈正常工作?

谢谢。

通常,WholeRowIterator 是 "stack" 中的最后一个迭代器,因为它涉及将行(许多键值)序列化为单个键值。您可能不想多次执行此操作。但是,假设您想这样做:

您可能想要编写一个迭代器,它使用 WholeRowIterator 方法将每个键值反序列化为 SortedMap,修改 SortedMap,将其重新序列化回单个键值,然后 return 它。需要为该迭代器分配的优先级高于为 WholeRowIterator 分配的优先级。

或者,您可以扩展 WholeRowIterator 并覆盖 encodeRow(List<Key>,List<Value>) 方法,以便首先不序列化不需要的列。这将节省第一种方法所具有的额外序列化和反序列化。