gpt4 book ai didi

java - 如何覆盖Accumulo中SortedKeyValueIterator接口(interface)的功能?

转载 作者:可可西里 更新时间:2023-11-01 15:02:28 26 4
gpt4 key购买 nike

我正在尝试创建一个自定义迭代器,但由于没有可用的教程,我查看了 Accumulo github 页面上提供的代码。

在那里我发现所有类都实现了 SortedKeyValueIterator 并覆盖了它的功能。

这些函数的作用是什么?在创建实现 SortedKeyValueIterator 的新类时重写这些函数时应该采用什么方法。

这是我试图理解的 RowFilter 类的示例代码。

 public void init(SortedKeyValueIterator<Key,Value> source, Map<String,String> options, IteratorEnvironment env) throws IOException {
super.init(source, options, env);
this.decisionIterator = new RowIterator(source.deepCopy(env));
}

public SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
RowFilter newInstance;
try {
newInstance = getClass().newInstance();
} catch (Exception e)
{
throw new RuntimeException(e);
}
newInstance.setSource(getSource().deepCopy(env));
newInstance.decisionIterator = new RowIterator(getSource().deepCopy(env));
return newInstance;
}

我想知道这段代码做了什么,如果我想让另一个类实现 SortedKeyValueIterator,我应该如何覆盖这些函数。

最佳答案

首先查看有关 SortedKeyValueIterator 的 Javadoc -- http://accumulo.apache.org/1.6/apidocs/ .对于每个方法应该做什么,这是一个很好的起点。

编写迭代器的一个很好的类比是将您的 Accumulo 表(迭代器正在其上运行)视为单链表(按排序顺序)。 next() 移动到列表中的下一个节点,seek() 向前/向下移动,跳过零到许多节点。 init() 从 Accumulo 表配置和客户端提供任何必要的配置(您的迭代器可能在 Accumulo 服务器中运行)。 deepCopy() 应该将当前迭代器的确切状态复制到一个新实例中(类似于 Object.clone())。

我还可以提供两个自定义迭代器的例子:

您还可以查看 Accumulo http://accumulo.apache.org/1.6/apidocs/org/apache/accumulo/core/iterators/user/package-summary.html 中提供的其他“面向用户”的迭代器

关于java - 如何覆盖Accumulo中SortedKeyValueIterator接口(interface)的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27793817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com